ffmpeg编译(android)
- 懒人专用链接
- //直接下载编译好的so库,供大家使用
ffmpeg-android: https://github.com/tbxyxs/ffmpeg-android.git
- //直接下载编译好的so库,供大家使用
- 编译环境
- ubuntu 17.10 x64
- ndk r14b
- 安装yasm
sudo apt install yasm
- ffmpeg源码git
mkdir ffmpeg-android cd ffmpeg-android git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg git checkout -B latest n3.3.7 //注:n4.0以上的版本始终编译不过,报错,所以就降到了n3.3.7版本,n4.0过了的大佬写个贴吧
- 编译脚本
//将下面的脚本copy下来,保存为ffmpeg_build.sh(注意保存编码为unix编码,不要保存为windows编码类型了) //记得手动修改下面的NDK_HOME变量,修改为你的ndk路径 ==============================赤果果的分界线================================= #!/bin/bash export NDK_HOME=/home/tolin/android/android-ndk-r14b export NDK_HOST_PLATFORM=linux-x86_64 COMMON_OPTIONS="\ --prefix=android/ \ --target-os=android \ --disable-static \ --enable-shared \ --enable-small \ --disable-programs \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-doc \ --disable-symver \ --disable-asm \ " function build_android { ./configure \ --libdir=${PREFIX}/libs/armeabi-v7a \ --incdir=${PREFIX}/includes/armeabi-v7a \ --pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \ --arch=arm \ --cpu=armv7-a \ --cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \ --sysroot="${NDK_HOME}/platforms/android-24/arch-arm/" \ --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make clean make -j8 make install ./configure \ --libdir=${PREFIX}/libs/arm64-v8a \ --incdir=${PREFIX}/includes/arm64-v8a \ --pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \ --arch=aarch64 \ --cpu=armv8-a \ --cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \ --sysroot="${NDK_HOME}/platforms/android-24/arch-arm64/" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make clean make -j8 make install ./configure \ --libdir=${PREFIX}/libs/x86 \ --incdir=${PREFIX}/includes/x86 \ --pkgconfigdir=${PREFIX}/pkgconfig/x86 \ --arch=x86 \ --cpu=i686 \ --cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \ --sysroot="${NDK_HOME}/platforms/android-24/arch-x86/" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make clean make -j8 make install ./configure \ --libdir=${PREFIX}/libs/x86_64 \ --incdir=${PREFIX}/includes/x86_64 \ --pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \ --arch=x86_64 \ --cpu=x86_64 \ --cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \ --sysroot="${NDK_HOME}/platforms/android-24/arch-x86_64/" \ --extra-ldexeflags=-pie \ ${COMMON_OPTIONS} make clean make -j8 make install }; PREFIX=$(pwd)/android/$CPU build_android
- 给脚本赋执行权限
//将ffmpeg_build.sh 复制到ffmpeg/目录中,与./configure文件同级。 chmod +x ffmpeg_build.sh //赋可执行权限
- 执行脚本
./ffmpeg_build.sh //等待编译完成吧,完成后就会在目录中出现一个android目录,里面libs目录就是我们要的结果了。