Android 视频 MediaCodec 压缩速度慢

Android video MediaCodec compression is slow

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

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

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

  1. 是否有一些参数可以用来加快压缩速度?
  2. 目标比特率和帧大小(如果有)如何影响视频压缩速度?
  3. 我们没有使用 FFMpeg。这样更快吗?

任何指示或提示,即使与上面的代码示例无关,也将不胜感激。

非常感谢!

奥马尔

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

有关如何有效使用异步模式的示例,请参阅 for a longer explanation with more references, and https://github.com/mstorsjo/android-decodeencodetest