我在当前的项目中遇到了麻烦,这个项目需要视频处理。基本上,裁剪功能(视频应该被平方),修剪(视频不应该超过30秒)和质量降低(比特率应该等于713K)。
我已经成功地将FFmpeg嵌入到应用程序中,除了一个主要的细节处理外,所有功能都运行得很好--按照老板的说法,处理时间太长了。对于拥有大约52 MB、36秒的视频,需要50秒才能完成所有操作(显然,在任何其他操作之前,我正在将视频微调到30秒)。问题是,在iOS上的并行项目中,视频处理需要10-15秒的时间来处理更大的文件。我认为这与他们使用苹果QuickTime格式有关,这显然是由苹果公司开发的,所以它运行得很快并不奇怪。
所以,这是一个介绍,现在我的问题是:安卓有没有办法在10-15秒的时间内处理任何质量的视频(现在我们可以假设所有视频都在h264上)(就像我老板说的那样,不会超过30秒)?一些替代FFmpeg,可以更快地执行操作?我很确定不可能在这么短的时间内完成这样的工作,因为我已经觉得自己在互联网上搜索了思想,但我想确保真的没有可能做这样的工作。如果有人能给我提供比FFmpeg更快的解决方案链接,或者确认没有这样的解决方案,我将非常感激。
更新
多亏了亚历克斯·科恩,我才用MediaCodec解决了这个问题。过了一会儿,我得到了20秒的处理52 to视频裁剪成正方形和降低比特率。对于任何未来的谷歌员工,我可以建议你看看这个存储库:关于MediaCodec的很多东西。
更准确地说,在这个文件中:再次提取、编辑和编码视频和音频
发布于 2016-04-23 13:23:09
如果视频是在同一台设备上录制的,那么您很有可能MediaCodec和本地安卓媒体API会更快(在HW中同时运行解码器和编码器)。否则,您可以尝试使用MediaCodec对视频进行解码,如果视频失败,则返回到FFmpeg软件解码器。即使这样,如果您可以使用MediaCodec进行压缩,那么仅这一项就可以提供令人满意的性能。
有一个名为libstagefright的(不推荐的)项目,它构建支持硬件编解码器的FFmpeg,并且它被设计用于API 10+。
不要忘记比较你的安卓设备和iOS平台的CPU特性(如果这是6S的话,他们有一个显著的优势)。考虑多线程编码和解码。
顺便说一句: FFmpeg没有附带H264编码器,而且典型的FFmpeg+x264包是GPL,它要求您的所有应用程序都是开源的(或者为x264支付高额的许可费,但仍然被迫遵守LGPL of FFmpeg)。
请注意,您可以通过操作MP4头来制作正方形视频,而不需要转码!
https://stackoverflow.com/questions/36808806
复制相似问题