Android,快速视频处理

时间:2016-04-23 09:09:09

标签: android video ffmpeg

我目前的项目有麻烦,需要视频处理。基本上是裁剪功能(视频应该是平方的),修剪(视频不应超过30秒)和质量降低(比特率应该等于713K)。
我已成功将FFmpeg嵌入到应用程序中,除了一个主要细节外,所有功能都运行得很好 - 按照我的老板处理时间太长。对于大约52 MB,持续36秒的视频,它需要50秒才能完成所有操作(我在任何其他操作之前将视频修剪到30秒)。问题是在iOS上的并行项目上,对于更大的文件,视频处理需要10-15秒。我认为这与他们使用Apple QuickTime格式的事实有关,而Apple QuickTime格式显然是由Apple开发的,因此它的工作速度非常快就不足为奇了。
好吧,这是介绍,现在我的问题:Android是否有任何方式可以处理任何质量的任何视频(现在我们可以假设所有视频都在h264中),时间为10-15秒(不超过30秒)秒,正如我老板说的那样)? FFmpeg的一些替代品,可以更快地执行操作?我很确定在这么短的时间内没有可能进行这样的工作,因为我已经觉得我在互联网上搜索了思想,但我想确保没有可能做这样的工作。如果有人能比FFmpeg更快地向我提供解决方案的链接或确认没有这样的解决方案,我将非常感激。

更新
感谢Alex Cohn,我已经通过MediaCodec解决了这个问题。过了一会儿,我在52MB视频上进行了20秒处理,裁剪到正方形并降低了比特率。对于未来的任何Google员工,我建议您查看此存储库: Many stuff about MediaCodec
更准确地说,在这个档案:Extract, edit and encode again, video and audio

1 个答案:

答案 0 :(得分:3)

如果视频已在同一设备上录制,则MediaCodec和原生Android media APIs很快就会更快(在硬件中运行解码器和编码器)。否则,您可以尝试使用MediaCodec解码视频,如果失败则返回FFmpeg软件解码器。即便如此,如果您可以使用MediaCodec进行压缩,仅此一项就可以提供满足您老板需求的性能。

存在一个名为libstagefright的(已弃用)项目,该项目构建了支持硬件编解码器的FFmpeg,并且它设计用于API 10 +。

不要忘记比较Android设备和iOS平台的CPU特性(如果是6S,它们具有显着优势)。考虑多线程编码和解码。

BTW:请注意,FFmpeg不附带H264编码器,典型的FFmpeg + x264捆绑包是GPL,并要求您的所有应用程序都是开源的(或支付高昂的许可费用x264,但仍然被迫遵守FFmpeg的LGPL)。

请注意,您只能通过操作MP4标头制作方形视频,而无需转码!