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

问题描述 投票:0回答:5

我正在

URL
上播放
Exoplayer
上的视频,它会在使用
resize_mode
调整大小时拉伸视频,正如我在布局文件中提到的那样,使用此功能我无法保持视频的宽高比。

我想像

CENTER_CROP
中那样进行缩放类型
TextureSurface
,如image2中所述,但我得到的输出为image1

我尝试过以下示例

Exoplayer 演示示例

我的输出(图1)和预期输出(图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"
它适合屏幕中的视频,但垂直拉伸, 那么我该如何解决这个问题呢。

aspect-ratio exoplayer
5个回答
93
投票

以下几行帮助我以全屏模式播放视频。

更改布局文件中的

app:resize_mode
有帮助,但它会拉伸问题中提到的视频。

<com.google.android.exoplayer2.ui.PlayerView
      android:layout_width="match_parent"
      app:resize_mode="...."
      android:layout_height="match_parent" />

尝试根据要求将

AspectRatioFrameLayout
更改为
FILL,FIT,ZOOM...
,下面的代码对我有用。

exoVideoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);

以下几行将确保即使对于

4:3
视频也能正确保持宽高比。

exoPlayer.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);

更改

VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
中的
exoplayer
有助于如上所述裁剪和缩放视频。


23
投票

为了在 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" />

9
投票

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

app:resize_mode="fixed_width"
app:resize_mode="fixed_height"
app:resize_mode="fill"
app:resize_mode="fit"
app:resize_mode="zoom"

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


6
投票

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

playerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
exoPlayer.setVideoScalingMode(C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);

0
投票

科特林:

    AndroidView(
    modifier = Modifier.fillMaxSize().fillMaxHeight().fillMaxWidth(),
    factory = {
        StyledPlayerView(context).apply {
            this.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FILL
        }
    })
© www.soinside.com 2019 - 2024. All rights reserved.