NDK r21b 编译FFmpeg 、x264 提供Android集成
在现今这个阶段,愈来愈多的app会涉及到音视频,那么学会使用ffmpeg和x264就颇有必要了。本篇文章将讲解如何把ffmpeg、x264编译成动态库和静态库。html
1. 编译环境
Linux/Ubuntu/Centis都行。在windows环境下能够安装虚拟机或者购买一个云主机,做者在阿里云购买的一个Ubuntu主机。linux
2. 准备工做
linux ndk下载:https://developer.android.google.cn/ndk/downloadsandroid
FFmpeg 下载:http://ffmpeg.org/download.htmlwindows
x264 下载:https://www.videolan.org/developers/x264.htmlbash
将下载好的文件解压app
3. 编写脚本
3.1 编译FFmpeg
1. 在解压后的ffmpeg目录新建build.sh文件,编辑build.sh,代码以下:ide
#!/bin/bash export NDK=/home/study/android-ndk-r21b export PREBUILD=$NDK/toolchains/llvm/prebuilt export CROSS_PREFIX=${PREBUILD}/linux-x86_64/bin/arm-linux-androideabi- export CC=$PREBUILD/linux-x86_64/bin/armv7a-linux-androideabi21-clang export NM=$CROSS_PREFIXnm export AR=$CROSS_PREFIXar export PREFIX=./android/armeabi-v7a function build_so { ./configure \ --prefix=$PREFIX \ --cc=$CC \ --nm=$NM \ --ar=$AR \ --enable-small \ --disable-programs \ --disable-avdevice \ --disable-encoders \ --disable-muxers \ --disable-filters \ --cross-prefix=$CROSS_PREFIX \ --target-os=android \ --arch=arm \ --disable-shared \ --enable-static \ --enable-cross-compile } make clean build_so make -j4 make install
2. 修改权限 chmod +x build.shui
3. 执行 ./build.shgoogle
4. 编译完成以后会在当前目录生成android/armeabi-v7a文件,里面的内容就是编译ffmpeg生成的静态库和头文件。阿里云
3.2 编译x264
1. 在解压后的ffmpeg目录新建build.sh文件,编辑build.sh,代码以下:
#!/bin/bash export NDK=/home/study/android-ndk-r21b export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 export API=21 function build_one { ./configure \ --prefix=$PREFIX \ --disable-cli \ --enable-static \ --enable-pic \ --host=$my_host \ --cross-prefix=$CROSS_PREFIX \ --sysroot=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot \ make clean make -j8 make install } #arm64-v8a PREFIX=./android/arm64-v8a my_host=aarch64-linux-android export TARGET=aarch64-linux-android export CC=$TOOLCHAIN/bin/$TARGET$API-clang export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++ CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android- build_one #armeabi-v7a PREFIX=./android/armeabi-v7a my_host=armv7a-linux-android export TARGET=armv7a-linux-androideabi export CC=$TOOLCHAIN/bin/$TARGET$API-clang export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++ CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- build_one
2. 修改权限 chmod +x build.sh
3. 执行 ./build.sh
4. 编译完成以后会在当前目录生成android/armeabi-v7a 和 android/arm64-v8a文件,里面的内容就是编译ffmpeg生成的静态库和头文件。