Linux环境下编译ffmpeg的so库

一、搭建环境

1.1安装ubuntu

自行参考网上的安装教程,我参考的如下教程:手把手教你安装Linux虚拟机

1.2一些必要工具的安装

比如make、vim等,也可在输入指令错误或者编译出错时按提示进行安装。

1.3下载ndk

ndk的官网地址下稳定版本即可。将下载的zip放到Linux的目录,比如 /home/ndk/下,然后打开命令行工具到该目录下执行解压:

unzip android-ndk-r22b-linux-x86_64.zip

1.4下载FFmpeg

FFmpeg的官网地址建议下载大版本,我下的是ffmpeg-4.4.tar.gz。下载完后右击"Extract Here"。

编译FFmpeg

1.1修改configure

进入源码根目录,找到该文件,右击"Open With Text Editor"(也可以在命令行用vim打开),找到如下代码:

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)'

1.2添加配置文件

在源码根目录新建build.sh,打开文件复制如下内容:

#!/bin/bash
make clean
export NDK=/home/xjf/ndk/android-ndk-r22b
export ADDI_LDFLAGS="-fPIE -pie"
export ADDI_CFLAGS="-fPIE -pie -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
export CPU=armv7-a
export ARCH=arm
export HOST=arm-linux
export SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin
export PREFIX=$(pwd)/android/$CPU
#export x264=$(pwd)/x264/android/$CPU
#export PATH=$x264/bin:$PATH
#export PATH=$x264/include:$PATH
#export PATH=$x264/lib:$PATH
#export PKG_CONFIG_PATH=$x264/lib/pkgconfig:$PKG_CONFIG_PATH
./configure \
--prefix=$PREFIX \
--toolchain=clang-usan \
--enable-cross-compile \
--target-os=android \
--arch=$ARCH \
--sysroot=$SYSROOT \
--cc=$TOOLCHAIN/armv7a-linux-androideabi21-clang \
--cxx=$TOOLCHAIN/armv7a-linux-androideabi21-clang++ \
--strip=$TOOLCHAIN/arm-linux-androideabi-strip \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
--disable-encoders \
--disable-decoders \
--disable-avdevice \
--disable-static \
--disable-doc \
--disable-ffplay \
--disable-network \
--disable-doc \
--disable-symver \
--disable-ffprobe \
--enable-neon \
--enable-shared \
#--enable-libx264 \
--enable-gpl \
--enable-pic \
--enable-jni \
--enable-pthreads \
--enable-mediacodec \
--enable-encoder=aac \
--enable-encoder=gif \
--enable-encoder=libopenjpeg \
--enable-encoder=libmp3lame \
--enable-encoder=libwavpack \
#--enable-encoder=libx264 \
--enable-encoder=mpeg4 \
--enable-encoder=pcm_s16le \
--enable-encoder=png \
--enable-encoder=mjpeg \
--enable-encoder=srt \
--enable-encoder=subrip \
--enable-encoder=yuv4 \
--enable-encoder=text \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--enable-decoder=libopenjpeg \
--enable-decoder=mp3 \
--enable-decoder=mpeg4_mediacodec \
--enable-decoder=pcm_s16le \
--enable-decoder=flac \
--enable-decoder=flv \
--enable-decoder=gif \
--enable-decoder=png \
--enable-decoder=srt \
--enable-decoder=xsub \
--enable-decoder=yuv4 \
--enable-decoder=vp8_mediacodec \
#--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-bsf=aac_adtstoasc \
#--enable-bsf=h264_mp4toannexb \
--enable-bsf=hevc_mp4toannexb \
--enable-bsf=mpeg4_unpack_bframes
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

以下为注意点:
1.NDK的路径一定是自己的ndk路径。
2.SYSROOT、TOOLCHAIN目录及脚本文件中提到的其文件夹下的相关的文件都要检查下是否存在!!!
3.关于disable和enable的配置可以根据自己的需要进行增减:

查看所有编译配置选项:./configure --help
查看支持的解码器:./configure --list-decoders
查看支持的编码器:./configure --list-encoders
查看支持的硬件加速:./configure --list-hwaccels

上面3点是编不过,各种报错的主要原因!!!

1.3执行脚本文件

赋予权限:chmod +x build.sh
执行脚本:./build.sh

然后就等它慢慢编译了,结束后在源码目录下的android/armv7-a/lib/下找到我们需要的.so文件。

如果还有不懂的请参阅下面的文章,讲解的很详细:
Android FFMPEG 开发

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容