android平台,视频转码加速思路(FFMPEG)

最近正在做手机上视频转码相关的工作,就把最近的心得体会写一下。以前手机的处理能力有限,CPU和GPU都不行,手机上顶多也就解码播放个视频看看,要是想在手机上整个图像视频处理,视频转码这样的计算量大的活,估计用户也就得等到天荒地老了。但最近随着手机硬件的不断提升,2核,4核的都出来了,这方面的需求开始出现。

目标就是在一定的码率和视频清晰度要求下,能尽快的转码视频文件,当然很多应用转码不是目的,而是手段,如要对视频或者音频内容添加一些处理,减小码率,加些滤镜等,这就只能在转码的过程的实现了。比如带2M码率264流的MP4文件(640*480,H264+AAC)转成500K码率的MP4文件(还是264+AAC),用正常编译的FFMPEG+x264,在小米1S上测试,3分钟的视频文件转码要10多分钟,那叫一个痛苦,下面是我对FFMPEG转码加速的优化过程:

1:优化X264,打开NEON汇编,X264没有针对ARM平台的多线程编译选项(pthreads),对CONFIUGRE文件进行HACK,打开多线程

2:把针对QCOM等芯片的硬件编码库嵌入到FFMPEG,替代X264,进行编码

3:把硬件解码库也嵌入到FFMPEG

经过上面的优化后,在小米1S手机上,2分钟的视频转码时间由开始的5分钟缩小到40秒左右。

本人将在另外的博文中对上面3个方面进行详细介绍。


本文版权归作者所有,欢迎转载,但需在文章页面明显位置给出原文连接。

你可能感兴趣的:(ffmpeg,x264,android开发)