避免 VideoView 中的视频拉伸

Posted

技术标签:

【中文标题】避免 VideoView 中的视频拉伸【英文标题】:Avoiding video stretching in a VideoView 【发布时间】:2018-02-15 21:18:34 【问题描述】:

我在使用 VideoView 时遇到了一个奇怪的问题。

使用一些 .mp4(使用 ffmpeg 编码)视频我遇到了这个问题:

视频被拉伸以覆盖所有屏幕宽度。

但是使用使用不同软件编码的 .mp4 视频(我不记得了) 结果是:

保留纵横比。

这是我的布局 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_>

    <ScrollView
        android:layout_
        android:layout_
        android:id="@+id/allenamento_activity">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">

            <VideoView
                android:id="@+id/videoView"
                android:layout_
                android:layout_
                android:layout_marginTop="2dp"
                android:layout_gravity="center">
            </VideoView>

            <---- OTHER XML CODE ------>

        </LinearLayout>
    </ScrollView>
</RelativeLayout>

如何防止视频拉伸?

【问题讨论】:

VideoView to match parent height and keep aspect ratio的可能重复 @BertoGT 有什么解决方案吗? 【参考方案1】:

滚动视图和所有子视图都设置为:

android:layout_

这意味着所有子元素的宽度都将与屏幕/主布局相同。

您要么需要计算所需的高度/宽度,要么将内容包装在宽度和高度上。

onMeasure 方法可能在这里有用吗?

【讨论】:

在网络上搜索时,我尝试使用Relative Layout 作为 VideoView 的容器,我尝试计算保持纵横比所需的宽度,但没有结果...

以上是关于避免 VideoView 中的视频拉伸的主要内容,如果未能解决你的问题,请参考以下文章

VideoView 大小不适合屏幕

TextureView/SurfaceView/GLSurfaceView/VideoView渲染视频(点播播放器)

Android Studio - 如何避免 VideoView 溢出其(视图)容器?

全屏视频查看而不拉伸视频

Android VideoView 根据每个设备调整大小

Android 视频播放器 :使用VideoView播放视频