Android视频MediaCodec压缩很慢

时间:2016-10-16 22:42:00

标签: android performance video compression mediacodec

我们正在研究需要调整大小(帧大小)和压缩视频的Android应用。我们测试了下面的代码示例,它目前很慢: https://github.com/hoolrory/AndroidVideoSamples/blob/master/CommonVideoLibrary/src/com/roryhool/commonvideolibrary/VideoResampler.java

输出视频帧尺寸减小(例如,480×320),并且还降低比特率以实现压缩。最终视频看起来非常好,压缩比也很好。只是过程很慢。我在运行Android 4.4的Galaxy S4和运行Android 6.0的Galaxy Note 5上进行了测试。后者更快,但不是很多。在Galaxy S4上,一段30秒的视频需要大约一分钟来压缩(平均)。

上面的代码解码输入表面上的输入视频,减小帧大小,并输出到输出表面。 MediaMuxer用于复用音频。该示例使用MPEG容器和H264编码器。一些相关问题:

  1. 我们可以使用一些参数来加速压缩吗?
  2. 如果有目标比特率和帧大小,视频压缩速度如何影响?
  3. 我们没有使用FFMpeg。那更快吗?
  4. 任何指针或提示,即使与上面的代码示例无关,也会受到高度赞赏。

    非常感谢!

    奥马

1 个答案:

答案 0 :(得分:1)

您的问题在于如何同步等待其中一个组件(编码器或解码器)上的事件。重建代码以使用异步回调运行,或者降低超时。

有关更多参考的详细说明,请参阅https://stackoverflow.com/a/37513916/3115956;有关如何有效使用异步模式的示例,请参阅https://github.com/mstorsjo/android-decodeencodetest