如题。一个ffmpeg转码的程序,流程为:视频-->解码元数据-->压缩(指定大小)-->第三方xh264库编码为h264文件。音频-->解码元数据-->faac第三方库转为aac文件。aac和h264 mux为新的mp4文件。程序在虚拟机centos7跑,1080X720的视频转为640的mp4基本耗时是1:1(视频多长转码多久),移植到安卓后耗时大约是6-10倍。请问大家有优化的方法吗?还是说我的算法太复杂。
Ps:已经开了双线程视频音频同时解码。
转码这种是典型的CPU计算密集型操作,此时Android ARM计算能力不如x86的劣势就体现出来了,1个小时的视频,Linux x86上转码花1小时,但Android ARM上转码花10个小时也是正常的.
同样的C语言程序:
1千万次冒泡排序,树莓派2B(BCM2709)需要花费6.8秒.
1亿次冒泡排序,i5-3230M需要花费6.3秒.
也就是说,BCM2709(ARM)跟i5-3230M(x86)的单核计算性能相差十几倍.