FFmpeg编译(一)

Don't run from who you are.
不要自我逃避。

FFmpeg是广泛使用的多媒体解决方案。因为其功能强大,音视频开发几乎都会使用到它。 下面就开始编译android平台下FFmpeg动态库.so吧~

编译环境

友情提示:ffmpeg和ndk不要选择最新和较老的版本,使用最新版本如果发生问题不太容易在找到解决方案,并且对初次尝试的人来说极其不友好,等熟悉了在尝试用最新的版本进行编译也不迟(如果你时间多并且愿意折腾请忽略)!
先安装下面将用到的工具

sudo apt-get install make
sudo apt-get install yasm
sudo apt-get install gcc
sudo apt-get install vim

配置NDK环境

首先在/etc/profile.d/目录下创建我们环境变量脚本,该目录脚本在系统启动时会被执行,相比于在/etc/profile配置环境变量更安全一些,不怕误删了什么变量。新增和删除都只涉及到我们自己的.sh

cd /etc/profile.d/
#创建ndk环境变量脚本
sudo touch android_ndk_env.sh
#打开脚本
vim android_ndk_env.sh

android_ndk_env添加环境变量

#替换成你电脑中的ndk路径,这里是我的ndk路径
export ANDROID_NDK=/opt/ndk/android-ndk-r14b
export PATH=$PATH:$ANDROID_NDK

编写shell脚本

#进入对应的ffmpeg目录
cd /opt/workspace/ffmpeg/ffmpeg-3.2.13/
#新建编译脚本
sudo touch build_android.sh
#编辑脚本
vim build_android.sh

build_android.sh脚本内容如下:

make clean
#此处修改成你NDK路径
export NDK=/opt/ndk/android-ndk-r14b
export SYSROOT=$NDK/platforms/android-21/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
#编译处的目录
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-Os -fpic -marm"
#编译用到的库文件
export ISYSROOT=$NDK/sysroot
#编译用到asm文件
export ASM=$ISYSROOT/usr/include/arm-linux-androideabi

#调用ffmpeg中的configure工具生成相关配置及头文件
#根据实际情况修改配置,详见./configure --help
./configure --target-os=android \
        --prefix=$PREFIX --arch=arm \
        --disable-doc \
        --enable-shared \
        --disable-static \
        --disable-yasm \
        --disable-symver \
        --disable-gpl \
        --disable-ffmpeg \
        --disable-ffplay \
        --disable-ffprobe \
        --disable-doc \
        --disable-symver \
        --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
        --enable-cross-compile \
        --sysroot=$SYSROOT \
        --extra-cflags="$ADDI_CFLAGS" \
        --extra-ldflags="$ADDI_LDFLAGS" \
        $ADDITIONAL_CONFIGURE_FLAG

#相关配置文件生成后开始编译
make clean
make
make install

开始编译

编译需先给ndk,FFmpeg赋予权限。

#替换成你的实际目录
chmod 777 -R ndk
chmod 777 -R ffmpeg

给予权限后进入FFmpeg目录执行下面片段开始编译

cd /opt/workspace/ffmpeg/ffmpeg-3.2.13/
./build_android.sh

如果不出意外的话,经过漫长的编译过程在当前android目录下可看到如下

14867887-678d7bc5c0ad713a.png
结果.png

到此就达到了本篇的目的(编译成功),后续将在app里使用so

猜你喜欢

转载自blog.csdn.net/weixin_34318326/article/details/88117467