我在当前需要视频处理的项目中遇到麻烦。基本上裁剪功能(视频应平方),裁剪(视频不应超过30秒)和质量降低(比特率应等于713K)。
我已成功将FFmpeg嵌入到应用程序中,除了一个主要细节外,所有功能都工作得很好 - 根据我的老板处理需要的时间太长。对于拥有52 MB大约36秒的视频,执行所有操作需要50秒(我明显在将视频剪辑为30秒前)。问题是在iOS视频处理上的并行项目需要10-15秒才能获得更大的文件。我认为这与他们正在使用Apple QuickTime格式有关,事实上这是苹果公司开发的,所以它的工作速度并不奇怪。
好吧,这是介绍,现在我的问题是:有没有什么办法让Android在10-15秒的时间内处理任何质量的视频(现在我们可以假设所有视频都是h264)在30秒内,正如我的老板所说)?一些替代FFmpeg,可以更快地执行操作?我很确定在这么短的时间内不可能完成这样的工作,因为我已经觉得我在互联网上搜索思想,但我想确保没有可能做这样的工作。如果任何人都可以给我提供比FFmpeg更快的解决方案链接,或者确认没有这样的解决方案,我会非常乐意。Android,快速视频处理
更新
感谢Alex Cohn我用MediaCodec解决了这个问题。过了一段时间,我在52MB视频上进行了20秒处理,裁剪成平方并降低了比特率。对于离开这里任何未来的Google我可以建议看看这个程序存储库: Many stuff about MediaCodec
多恰恰在这个文件:Extract, edit and encode again, video and audio
嗯,我已经尝试在FFmpeg上使用HW,但它失败了。显然,我也阅读了MediaCodec的文档,但没有得到如何很好地整合这一点。从我们的项目的最小API版本是15,MediaCodec需要16,但是我认为如果有必要,我可以说服团队将最小的API升级到16。无论如何,我会仔细看看MediaCodec,希望能找到一些解决方案:)关于h264,是的,我们使用libx264,并且告诉我的老板关于许可问题。他说,不要为此烦恼,并将其留给他,正如我刚刚所做的那样 –
FFmpeg的HW支持意味着SIMD加速,即适度的渐进式改进。 MediaCodec使用硬件编码器,它基本上受内存总线的限制。 –
API 15是一个奇怪的限制,今天有2.2%的设备,并且从未成为流行的平台。要么坚持姜饼,要么转移到果冻豆或更高。 –