(码字不易,转载请声明出处:http://blog.csdn.net/andrexpert/article/details/73823740)
一、ffmpeg在linux环境下的编译
1. 编译环境
(1) VirtualBox:VirtualBox_5.1.22.15126.exe
(2) Ubuntu:ubuntu-14.04.5-desktop-amd64.iso
(3) NDK:android-ndk-r14b-linux-x86_64.zip
(4) ffmpeg:ffmpeg-3.3.2.tar.bz2
为了提高ffmpeg编译速度,这里选择在Linux环境下对其进行编译。VirtualBox安装Ubuntu比较简单,可自行查找相关资料,只是在为虚拟系统分配磁盘空间时建议大于20GB,因为NDK体积还是比较大的,默认的8GB根本不够用。其次,NDK的版本一定要与Ubuntu版本一致,我这里选择的是64位的,为什么这里要强调下,因为就是这个版本不一致问题,让我在configure ffmpeg时整整花了两天时间去找bug,只怪太相信自己的记忆力了。最后,解压NDK和ffmpeg到同一目录下即可,我的解压路径是/home/jiangdongguo/ffmpeg。
2. 配置ffmpeg
(1) 设置NDK路径
为了方便配置configure命令的相关参数,这里我们使用export命令将NDK存储路径设置为全局的,另外,我们还需要设置一个临时目录,以便存储ffmpeg编译时产生的临时数据,当然,这里需要保证该目录已经存在且可读写。注:也可以将这两行命令放到脚本文件中。
jiangdongguo@jiangdg:~$ export NDK=/home/jiangdongguo/ffmpeg/android-ndk-r14b
jiangdongguo@jiangdg:~$ export TMPDIR=/home/jiangdongguo/ffmpeg/ffmpegTmpDir
(2) 配置ffmpeg
a) 创建执行configure命令脚本文件
root@jiangdg:/home/jiangdongguo/ffmpeg/ffmpeg-3.3.2# vim configure_arm.sh
在创建配置ffmpeg的脚本文件时,有三个地方需要根据自身情况更改:SYSTEMROOT,用于指定ndk platform的路径,一定要选择比你的目标机器使用的版本低,比如你的手机是Android 6.0,那么需要选择android-23以下;TOOLCHAIN_PREFIX,指定编译ffmpeg编译工具链所在路径;PREFIX,用于指定编译完成后so文件输出目录,会自动在改路径目录下生成Android使用所需的include和lib目录。
其中,--target-os选项指定目标系统类型、--arch选项指定目标系统架构、--enbale-shared、-ena