Play videos with 90 degree rotation
- Dominant language
- Java
- Stars
- 21.9k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
### ExoPlayer Version
2.18.2
### Devices that reproduce the issue
I tested on android 8.1
### Devices that do not reproduce the issue
_No response_
### Reproducible in the demo app?
Yes
### Reproduction steps
EDIT copied from title by @marcbachinger:
"I set playerview.setRotation and i recorded video using native camera in portrait mode so its rotation degree is 90.Then I play in exoplayer it plays correctly in portrait mode again I play same video it rotates automatically.I set portrait in manifest for same activity.vide"
Any native camera recorded video
Exoplayer does not rotate but video does when scroll up and down multiple times in viewpager.
```
DefaultRenderersFactory rf = new DefaultRenderersFactory(mContext)
.setExtensionRendererMode(EXTENSION_RENDERER_MODE_PREFER).setMediaCodecSelector(
new MediaCodecSelector() {
@Override
public List getDecoderInfos(String mimeType,
boolean requiresSecureDecoder, boolean requiresTunnelingDecoder)
throws MediaCodecUtil.DecoderQueryException {
List decoderInfos = MediaCodecSelector.DEFAULT
.getDecoderInfos(mimeType, requiresSecureDecoder, requiresTunnelingDecoder);
if (MimeTypes.VIDEO_H264.equals(mimeType)) {
// copy the list because MediaCodecSelector.DEFAULT returns an unmodifiable list
decoderInfos = new ArrayList<>(decoderInfos);
Collections.reverse(decoderInfos);
}
return decoderInfos;
}
});
exoPlayer = new ExoPlayer.Builder(holder.mVideoView.getContext(),rf).setLoadControl(loadControl).build();
holder.mVideoView.setPlayer(exoPlayer);
holder.mVideoView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
holder.mVideoView.setShutterBackgroundColor(Color.TRANSPARENT);
holder.mVideoView.setKeepContentOnPlayerReset(true);
exoPlayer.seekTo(0);
exoPlayer.setRepeatMode(Player.REPEAT_MODE_ONE);
mediaSource = new ProgressiveMediaSource.Factory(
new CacheDataSource.Factory()
.setCache(SimpleMediaPlayer.getInstance(mContext))
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
.setUserAgent(mContext.getString(R.string.app_name)))
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
).createMediaSource(MediaItem.fromUri(videoItem.videoURL));
exoPlayer.addMediaSource(mediaSource);
exoPlayer.prepare();
exoPlayer.setPlayWhenReady(true);
exoPlayer.play();
```
### Expected result
All videos should play in portrait.
### Actual result
video sideways
### Media
Any native camera recorded video
### Bug Report
- [ ] You will email the zip file produced by `adb bugreport` to dev.exoplayer@gmail.com after filing this issue.
Contributor guide
Assessment
This issue has not been assessed yet.