本文是关于在Win10下编译生成FFMPEG头文件和.so文件供Android下使用的具体流程。
准备工作
首先需要先下载FFMPEG、NDK和MinGW。
下载FFMPEG
具体界面如下图所示,可以直接选择下载最新的版本,当前最新版本为3.4.1。
下载NDK
具体界面如下图所示,推荐下载最新的。
下载MinGw
具体界面如下图所示
具体版本
- Win10 系统
- ffmpeg-3.4.1
- android-ndk-r14b-windows-x86_64
- mingw
开始配置
第一步 安装MinGw
安装完成后,在 MinGw installation Manager 中点击左边Basic Setup选项,然后选中右边所对应的所有的package包,选中包时右键选择Mark for Installation ,然后点击工具栏中的Installation—>Applay Changes,等待安装完成。网上也有教程指出到选择安装选项的时候只需要选择msys-base和mingw32-gcc-ada两项即可。
第二步 配置环境变量
需要在环境变量path中加入MinGw中两个bin的路径,D:\MinGw\bin和D:\MinGw\msys\1.0\bin,具体路径根据个人安装的MinGw而定。
第三步 更改FFMPEG的configure文件
找到FFMPEG下的configure文件,将
SLIBNAME_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)'
我是直接将之前的注释掉
第四步 创建build_android.sh文件
在FFMPEG下新建build_android.sh文件,然后将如下内容粘贴进去。
#!/bin/bash
export TMPDIR=D:/ffmpeg-3.4.1/tempdir
NDK=D:/android-ndk-r14b-windows-x86_64/android-ndk-r14b
SYSROOT=$NDK/platforms/android-14/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CPU=arm
PREFIX=D:/ffmpeg-3.4.1/output/$CPU
ADDI_CFLAGS="-Os -fpic -marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-asm \
--enable-neon \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-pthreads \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-runtime-cpudetect \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
read -p "Press any key to continue."
参数说明
- TMPDIR— 是个临时目录,tempdir文件需要自己提前新建。
- NDK—NDK的路径
- SYSROOT—到NDK路径下查看
- TOOLCHAIN—到NDK路径下查看
- PREFIX—编译生成的头文件与so文件的存放处,output文件夹不需要自己手动新建。
- function build_one部分可以根据自己的需要进行“裁剪”。
第五步 编译
到D:\MinGw\msys\1.0下打开msys.bat文件,依次输入下面两行命令。
cd D:\ffmpeg-3.4.1
./build_android.sh
等待……
编译完成后到D:\ffmpeg-3.4.1\output\arm下会看见下面三个文件夹
其中,include为头文件,lib包含生成的.a文件和.so文件。
至此所有的编译工作完成,本文主要是根据别人的博客自己做的总结,很多参数的意思并没有理解,以后慢慢补充更改。
参考:http://blog.csdn.net/huweijian5/article/details/52840177