如何在ExoPlayer-V2中缩放视频 - 全屏播放视频

Sag*_*gar 9 aspect-ratio exoplayer

我玩视频从URLExoplayer,它伸展在调整视频/使用resize_mode,因为我已经在布局文件中使用此提到的我不能够保持视频的纵横比.

我想像CENTER_CROP我们TextureSurfaceimage2中提到的那样进行缩放类型,但我得到输出为image1

我试过以下例子

Exoplayer演示示例

我的输出(图1)和预期输出(图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" />
Run Code Online (Sandbox Code Playgroud)

使用这条线,app:resize_mode="fill"它可以在屏幕上显示视频但是垂直拉伸,那么我该如何解决这个问题.

Sag*_*gar 34

以下两行帮助我以全屏模式播放视频.

app:resize_mode在布局文件中使用这个有些帮助,但它会延伸问题图片中提到的视频,因此您可以通过在代码中添加这两行来解决.

exoVideoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
exoPlayer.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
Run Code Online (Sandbox Code Playgroud)

波纹线将确保即使对于4:3视频也能正确保持宽高比.

playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);. 
Run Code Online (Sandbox Code Playgroud)

  • `exoVideoView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);` 行应更改为 `playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);`。这将确保即使对于 4:3 视频也能正确保持宽高比。 (2认同)
  • 我的播放器视图不在中心,它放置在顶部(高度和宽度是 match_parent),如何使其居中()?注意 - 为玩家视图提供顶部边距将不起作用(如果我这样做,玩家视图会变小)。 (2认同)

Dra*_*ire 9

以下是可以使用的调整大小模式选项

app:resize_mode="fixed_width"
app:resize_mode="fixed_height"
app:resize_mode="fill"
app:resize_mode="fit"
app:resize_mode="zoom"
Run Code Online (Sandbox Code Playgroud)

您可以尝试每一种,看看它对您的容器的影响。


Tou*_*hid 6

为了在exo播放器中保持中心裁剪,以下代码对我有用:

Java代码:

playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
Run Code Online (Sandbox Code Playgroud)

或者您可以从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" />
Run Code Online (Sandbox Code Playgroud)


小智 5

我的问题已使用以下几行解决:

playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
exoPlayer.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记在 PlayerView 中添加 `app:surface_type="texture_view"` (2认同)