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生成的靜態庫和頭文件。