虽然32位的库在64位机器上也能正常运行,但是经过测试,用小米8转码64位的库比32位还是要快10%左右,所以还是同时提供32位和64位比较好。
- 根据此教程编译出来的FFmpeg支持mediacodec硬件解码h264,h265,不支持硬件编码;编码h264可以用x264。文中的编译脚本可以直接编译出arm32位和64位的动态链接库。
1.搭建编译环境
1.1安装ubuntu14.04,安装完成后执行以下命令
apt-get update
apt-get install yasm
apt-get install pkg-config
1.2下载ndk
我用的是ndk r15c,下载ndk r15c
将ndk下载到 /home/ndk/目录下,下载完成后执行unzip android-ndk-r15c-linux-x86_64.zip
解压
1.3下载FFmpeg
关于FFmpeg版本,推荐3.4这个分支的最新版本就可以了,因为4.0和4.1不知道为什么都没有mediacodec硬件加速,还是我自己哪里没搞明白?知道的朋友可以留言讨论下。
这里我们就下载3.4.5,下载FFmpeg n3.4.5,也可以自己选择最新版,查看最新版
下载完成后解压进入根目录,执行./configure --list-hwaccels
,可以看到支持的硬件加速:
./configure --list-encoders
查看支持的编码器
./configure --list-decoders
查看支持的解码器
可以看到FFmpeg只支持mediacodec解码,并不支持mediacodec编码,如果要使用FFmpeg进行编码的话需要引入x264,需要编码hevc的话还要引入x265。