慢avcodec_decode_video2,ffmpeg在android上

时间:2014-01-03 04:00:53

标签: android performance ffmpeg decode

我正在使用ffmpeg在android上开发一个播放器。但是,我发现avcodec_decode_video2非常慢。有时,从1920×1080分辨率的视频解码帧需要大约0.1秒甚至0.2秒。

如何提高avcodec_decode_video2()的速度?

2 个答案:

答案 0 :(得分:1)

这听起来像是仪式。高清视频需要大量的CPU。如果您的设备有多个内核,某些编解码器可能支持多线程解码。但是会消耗大量的电池,并加热设备。这就是大多数移动设备使用专用硬件解码器而不是CPU的原因。在Android中,使用MediaCodec API而不是libavcodec应该调用硬件解码器。

答案 1 :(得分:1)

如果您的设备具有必要的硬件+固件功能,则可以使用ffmpeg with libstagefright support

更新:这是一个简单的程序,可以决定在设备上为给定类别的视频切换到libstagefright是否值得:在PC上使用ffmpeg将代表性视频流转换为MP4:

ffmpeg -i your_video -an -vcodec copy test.mp4 

并尝试使用设备上的股票视频播放器打开生成的文件。如果视频确实以合理的质量播放,您可以使用libstagefright和ffmpeg来改善您的播放器应用。如果您看到“无法播放视频”,则您的设备hw + fw不支持该视频。

"Cannot Play Video" popup