我们正在研究需要调整大小(帧大小)和压缩视频的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编码器。一些相关问题:
任何指针或提示,即使与上面的代码示例无关,也会受到高度赞赏。
非常感谢!
奥马
答案 0 :(得分:1)
您的问题在于如何同步等待其中一个组件(编码器或解码器)上的事件。重建代码以使用异步回调运行,或者降低超时。
有关更多参考的详细说明,请参阅https://stackoverflow.com/a/37513916/3115956;有关如何有效使用异步模式的示例,请参阅https://github.com/mstorsjo/android-decodeencodetest。