FFmpeg编译并集成到android studio

1.FFmpeg编译

编译过程

准备编译脚本

#!/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

注:复制的情况下要把\后面空格去掉

开始编译

先把刚写完的脚本命名为build_android.sh,然后把它保存到ffmpeg3.4文件夹中,再ffmpeg文件夹空白处右键打开终端,通过linux命令给build_android.sh赋予最高权限

FFmpeg编译并集成到android studio

然后输入./build_android.sh开始编译,大概等几分钟就编译完成了

FFmpeg编译并集成到android studio

现在ffmpeg3.4文件夹下就新生成了一个android文件夹,里面有两个文件,一个是支持neon和硬解码,一个是不支持的

FFmpeg编译并集成到android studio

再进进去就有三个文件夹,第一个是头文件,第二个是so库,第三个是案例

FFmpeg编译并集成到android studio

移植到androidstudio

打开android studio 新建工程,勾选c++

FFmpeg编译并集成到android studio

后面再选c++11,后面直接next就好了

FFmpeg编译并集成到android studio

工程建好后,把前面编译好的库复制到app/libs中

FFmpeg编译并集成到android studio

接着开始编译CmakeLists.txt(前提是要安装cmake,sdk manager里可以选择)

FFmpeg编译并集成到android studio

后面开始配置app中的build.gradle

FFmpeg编译并集成到android studio

读者福利

Android架构师的门槛,有没有免费学习资料?

加入Android高级架构群1007478004,免费提供视频和资料,一起学习,相互讨论。

FFmpeg编译并集成到android studio

最后点Build——make project ,完成,build里生成 libnative-lib.so

FFmpeg编译并集成到android studio

整个编译到移植到这里全部完成了。