Android FFMPEG音视频开发(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Viiou/article/details/90486787

本文参考:https://blog.csdn.net/JohanMan/article/details/81565834

2.编译出So库

Android使用的C++库是so库,所以我们需要在Linux环境下交叉编译出Android需要的So库。至于为什么不是在Windows环境下编译,因为在Windows下问题太多了。

自己的系统是Windows,所以先下载VMware与Ununtu这两个软件,把Linux环境先搭建起来。

Vmware与Linux环境大家都会装,这里就不再赘述了。但是编译需要的 NDK与FFMPEG却是有要求的,版本太过领先或不对,都有可能造成编译失败。

NDK:android-ndk-r13b-linux-x86_64.zip(https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip)

FFMPEG:ffmpeg-3.2.1.tar.gz(https://ffmpeg.org/releases/ffmpeg-3.2.1.tar.gz)

下载完成后将压缩文件拷到Linux环境中,然后进行解压。

解压后的两个文件夹位置是:/home/willscorpio/FFMPEG/,之所以要说这个,是因为在修改编译脚本时要用到这个。
在这里插入图片描述
然后再ffmpeg-3.2.1文件夹中configure文件,用Ubuntu的Text Editor打开。

将文件中的

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

改为

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

因为是在文件中间,可以搜索然后修改,改完后长下面这样,大家也能看明白,就是为了修改so命名规则。
在这里插入图片描述
然后在ffmpeg-3.2.1中新建一个build_android.sh文件,内容如下:

#!/bin/bash
make clean
export NDK=/home/willscorpio/FFMPEG/android-ndk-r13b
export SYSROOT=$NDK/platforms/android-9/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="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

对于这个文件内容是需要修改的,将NDK的内容修改为你下载解压NDK的地址,除非你的用户名和文件夹名字与我的一模一样,实质上是指定NDK的路径。

然后给buid_android.sh添加权限:

chmod +x build_android.sh

如果和你和我一样,是新搭配的环境,可能还需要安装make,否则会报错make: command not found

然后使用下面的命令安装make

sudo apt-get install make

make安装完成后运行build_android.sh:

./build_android

大概10分钟左右,会编译so库成功,成功的标志是在ffmpeg文件夹下有一个android文件夹,android/arm/lib中便是我们编译出的可以在Android上使用的so库。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Viiou/article/details/90486787