UNIX NDK 编译 FFMPEG
编写此文章主要是本人对编译FFmpeg过程中的一些注意事项进行总结和记录,便于以后需要用到时少走冤枉路。废话不多说进入主题!
准备工作
虚拟机:VMware Workstation
操作系统: Ubuntu 10.10
NDK:android-ndk-r10d
FFmpeg:FFMpeg3.2
假定我认为你已经安装好系统及NDK,如未安装请移步:Linux–Ubuntu安装NDK
所有准备工作做好后我们开始编译FFmpeg,编译FFmpeg有如下几步:
1、解压 将下载好的ffmpeg-3.2.tar.bz2拷贝到根目录下,打开命令终端(ctrl+alt+T) 输入命令进行解压:
tar -xjvf ffmpeg-3.2.tar.bz2
2、修改configure文件配置 进入ffmpeg-3.2目录打开configure文件找到如下代码并替换
BNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
修改为
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
修改好configure之后保存即可。
3、新建build_android.sh文件 在ffmpeg-3.2目录下新建build_android.sh文件并打开,配置如下代码:
#!/bin/bash
export NDK=/home/lichengwei/android-ndk-r10d
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
export PLATFORM=$NDK/platforms/android-21/arch-arm
export PREFIX=../simplefflib
function build_one(){
./configure \
--target-os=linux --prefix=$PREFIX \
--enable-cross-compile \
--enable-runtime-cpudetect \
--disable-asm \
--arch=arm \
--cc=$PREBUILT/linux-x86/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--disable-stripping \
--nm=$PREBUILT/linux-x86/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--enable-gpl --enable-shared --disable-static --enable-small \
--disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug \
--extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a"
}
build_one
make
make install
大概是这个样子:
将配置中的NDK路径修改成你安装的NDK实际路径。切记千万不要有多余的空格,我就是因为配置中有空格导致编译失败N次。simplefflib目录你可以不用管,因为他会自动创建。确认OK之后咱们进行下一步!
4、开始编译 在终端进入ffmpeg-3.2目录
#小提示:输入ff的时候按一下Tab键可自动补充
cd ffmpeg-3.2\
将build_android.sh文件设置为可执行文件,
chmod +x build_android.sh
输入ls回车当build_android.sh变成绿色字体表示设置成功
输入以下命令开始编译ffmpeg
./build_android.sh
出现以下界面表示编译正常,正常情况下会编译几分钟至十来分钟左右,如果出现异常可根据异常信息进行百度、谷歌。
编译完成后,根目录下会生成simplefflib文件加,所有编译的文件将保存在该目录下,如图:
编译完成,祝您成功!