Android和FFmpeg。视频非常慢

3
我已经从这里构建了适用于我的Android设备的ffmpeg库:https://github.com/appunite/AndroidFFmpeg。但是有些视频文件播放非常缓慢(我发现,即使是我的Android设备本身也能播放的视频也很慢)。这是build.sh脚本: https://github.com/appunite/AndroidFFmpeg/blob/master/FFmpegLibrary/jni/build_android.sh 也许是因为以下这些行导致的:
--enable-hwaccel=h264_vaapi \
--enable-hwaccel=h264_vaapi \
--enable-hwaccel=h264_dxva2 \
--enable-hwaccel=mpeg4_vaapi \

据我所知,这些代码行启用了硬件加速(该代码的作者说会出现一些bug)。该播放器的基本思路是在本地代码中解码视频和音频流,然后将视频帧呈现为AndroidBitmap,并将音频呈现为Android MediaPlayer。

有没有人知道如何解决视频解码缓慢的问题(也许可以降低视频帧分辨率或做其他调整?)我会很高兴得到任何帮助和建议。

1个回答

2

奇怪的是--enable-hwaccel=h264_vaapi连续出现了两次,但我看到它在你提供的原始构建脚本中。

DXVA2指的是Windows桌面计算机上可用的DirectX视频加速,所以这对此处没有帮助。VAAPI指的是视频加速API。我本来想说它只针对Unix桌面,但维基百科页面指出它也可以针对Android。

解码缓慢的可能原因是采用了软件解码路径。您正在解码什么类型的视频数据,以及使用什么配置和分辨率?通常最好利用Android媒体设施进行播放,例如MediaPlayer,除非您正在做一些特殊的事情。您可能已经研究过这个选项,也许发现无法获取原始的AndroidBitmaps(我对Android开发不太熟悉)。

我正在查看FFmpeg的VAAPI接口和VAAPI->Android代码的源代码。如果您已经为Android编译了FFmpeg,它是如何访问VAAPI的?您也已经为Android编译了VAAPI吗?我有一种感觉,VAAPI不是Android的标准组件(但我不确定),因此您可能需要确保VAAPI已经就位。然后,您是否正确地要求FFmpeg使用VAAPI?我认为FFmpeg不会自动检测到这一点。


Mike,非常高兴收到你的回复。我不知道原始视频的分辨率(但从日志级别中可以看出大致是1000多乘以1000多)。视频格式为flv和wmv,并使用H.264编解码器。对我的英语表示抱歉 :-) - bukka.wh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接