URL
のExoplayer
からビデオを再生しています。resize_mode
これを使用してレイアウトファイルで説明したように、ビデオのアスペクト比を維持できません。
スケールタイプCENTER_CROP
は、image2で述べたようにTextureSurface
で行いますが、image1として出力されます
私は次の例を試してみました
My Output(Img 1)およびExpected Output(Img 2)
exoplayerレイアウトコード
<com.google.Android.exoplayer2.ui.SimpleExoPlayerView
Android:id="@+id/player_view"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:resize_mode="fill" />
この行でapp:resize_mode="fill"
それは画面のビデオにフィットしますが、垂直方向に伸びます。
2行続くことで、全画面モードでビデオを再生できました。
レイアウトファイルでapp:resize_mode
を使用すると、多少助けになりますが、質問の画像で述べたようにビデオを引き伸ばすので、コードにこれらの2行を追加することで解決できます。
exoVideoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
exoPlayer.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
ベローラインを使用すると、4:3ビデオでもアスペクト比が正しく維持されます。
playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);.
コードの下のexoプレーヤーでセンタークロップを維持するために私のために働いた:
Javaコード:
playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
または、xmlから使用できます。
<com.google.Android.exoplayer2.ui.PlayerView
Android:id="@+id/playerView"
Android:layout_width="match_parent"
app:resize_mode="zoom"
Android:layout_height="match_parent" />