web-dev-qa-db-ja.com

ExoPlayer-V2でビデオをスケーリングする方法-ビデオを全画面で再生する

URLExoplayerからビデオを再生しています。resize_modeこれを使用してレイアウトファイルで説明したように、ビデオのアスペクト比を維持できません。

スケールタイプCENTER_CROPは、image2で述べたようにTextureSurfaceで行いますが、image1として出力されます

私は次の例を試してみました

Exoplayerデモの例

My Output(Img 1)およびExpected Output(Img 2)

enter image description here

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"それは画面のビデオにフィットしますが、垂直方向に伸びます。

8
Sagar

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);. 
31
Sagar

コードの下の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" />
5
Touhid