Android FFmpeg在Windows上编译的版本和注意事项

一、下载

1.FFmpeg源码

https://blog.csdn.net/seniorwizard/article/details/94725567

这里有很多版本,注意下载bz2的:

下载完毕后解压,本人解压在D:\Android\FFmpegSrc:

2.FFmpeg下载

https://ffmpeg.zeranoe.com/builds/

根据自己的电脑下载:

解压后,配置环境变量,如本人的是在(注意用分号隔开)

D:\Android\FFmpeg\ffmpeg-20191029-d3dee67-win64-static

Path中加入:根据自己的修改

;\Android\FFmpeg\ffmpeg-20191029-d3dee67-win64-static;

验证是否配置OK,打开命令行:

输入命令“ffmpeg  –version”

3.Android  NDK下载

https://developer.android.google.cn/ndk/downloads/

PS:不能在Android Studio上面下载,一定会出问题的,已经试毒。

下载后,解压并配置环境变量,如本人的在(注意用分号隔开)

D:\Android\AndroidSDK\ndk\android-ndk-r14b

Path中加入:根据自己的修改

;D:\Android\AndroidSDK\ndk\android-ndk-r14b;

验证是否配置OK,打开命令行:

输入命令“ndk-build”

4.MinGW下载

https://sourceforge.net/projects/mingw/files/

下载完毕后,双击“mingw-get-setup.exe”安装,本人是安装在D:\MinGW

安装完毕后,打开桌面上生成的快捷方式:

点击"Basic Setup",把右边的所有选项选中,再点击左上角的“Installation”,选中“Apply Change”

更新完毕后,根据自己的路径配置环境变量,如本人的是(注意用分号隔开)

D:\MinGW\bin;

D:\MinGW\mingw32\bin;

D:\MinGW\msys\1.0\bin

验证是否配置OK,打开命令行:

输入命令“gcc -v”

PS:下载的东西就这么多了,一定要注意Android NDK的下载和MinGW的包的更新,一定要OK,否则编译会失败

二、编译FFmpeg

1.进入已经解压好的FFmpeg源码的文件夹,创建"xxxx.sh"(名字自己取)的shell文件,文件的内容为:

#!/bin/bash 
NDK=D:/Android/AndroidSDK/ndk/android-ndk-r14b
SYSROOT=$NDK/platforms/android-18/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
function build_one
{
./configure \
     --prefix=$PREFIX \
     --enable-shared \
     --disable-static \
     --disable-doc \
     --disable-ffmpeg \
     --disable-ffplay \
     --disable-ffprobe \
     --disable-ffserver \
     --disable-doc \
     --disable-symver \
     --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
     --target-os=linux \
     --arch=arm \
     --enable-cross-compile \
     --sysroot=$SYSROOT \
     --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
     --extra-ldflags="$ADDI_LDFLAGS" \
     $ADDITIONAL_CONFIGURE_FLAG
     make clean
     make
     make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

PS:要注意前面的路径是否正确,当然上面的脚本也不是唯一,网上还有其他的,根据自己的情况来。

后进入“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)'

2.进入MinGW的安装目录,进入D:\MinGW\msys\1.0,打开“msys.bat”,并且进入到ffmpeg的源码文件夹

根据自己的路径来,进入之后再根据自己的"xxxx.sh"文件输入“./xxxx.sh”;

然后进入编译阶段,要等待一段时间,成功的话会在自己的ffmpeg的源码文件夹下生成“android文件夹”

进入,有这些的话就表示成功了

PS:最后再次强调一下,一定要注意Android NDK的下载千万不能在Android Studio里面下载,MinGW的更新一定要OK,不然的话绝对会出现奇葩问题。