1.1準備工做html
下載ubuntu18.04.2 www.ubuntu.com/download/de…(本人是直接在 linux上開發的,若是在windows上須要安裝虛擬機)linux
下載ffmpeg3.4 ffmpeg.org/releases/ff…(目前最新版本編譯死 的時候有問題,因此選擇先用老版本,3.4版本後不須要更改configure文件內容)android
下載ndk developer.android.google.cn/ndk/downloa…c++
(目前用的是r14b,其餘版本試過沒成功)ubuntu
1.2編譯過程windows
準備編譯腳本bash
#!/bin/bash
echo "進入編譯ffmpeg腳本"
NDK=/home/fanqile/Desktop/android-ndk-r16
#5.0
PLATFORM=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=armv7-a
#輸出路徑
PREFIX=./android/$CPU
function buildFF
{
echo "開始編譯ffmpeg"
./configure \
--prefix=$PREFIX \
--target-os=android \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--cpu=$CPU \
--sysroot=$PLATFORM \
--extra-cflags="$CFLAG" \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--enable-shared \
--enable-runtime-cpudetect \
--enable-gpl \
--enable-small \
--enable-cross-compile \
--disable-debug \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-postproc \
--disable-avdevice \
--disable-symver \
--disable-stripping \
$ADDmake
-j16
make install
echo "編譯結束!"
}###########################################################
echo "編譯支持neon和硬解碼"
CPU=armv7-a
PREFIX=./android/armv7-a-neon-hard
CFLAG="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp "
ADD="--enable-asm \ --enable-neon \ --enable-jni \ --enable-mediacodec \ --enable-decoder=h264_mediacodec \ --enable-hwaccel=h264_mediacodec "
buildFF
###########################################################
echo "編譯不支持neon和硬解碼"
CPU=armv7-a
PREFIX=./android/$CPU
CFLAG="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=vfp -mfloat-abi=softfp "
ADD=
buildFF
複製代碼
注:複製的狀況下要把\後面空格去掉app
開始編譯ide
先把剛寫完的腳本命名爲build_android.sh,而後把它保存到ffmpeg3.4文件夾中,再ffmpeg文件夾空白處右鍵打開終端,經過linux命令給build_android.sh賦予最高權限post
而後輸入./build_android.sh開始編譯,大概等幾分鐘就編譯完成了
如今ffmpeg3.4文件夾下就新生成了一個android文件夾,裏面有兩個文件,一個是支持neon和硬解碼,一個是不支持的
再進進去就有三個文件夾,第一個是頭文件,第二個是so庫,第三個是案例
打開android studio 新建工程,勾選c++
後面再選c++11,後面直接next就行了
工程建好後,把前面編譯好的庫複製到app/libs中
接着開始編譯CmakeLists.txt(前提是要安裝cmake,sdk manager裏能夠選擇)
後面開始配置app中的build.gradle
最後點Build——make project ,完成,build裏生成 libnative-lib.so
整個編譯到移植到這裏所有完成了。