Ubuntu ffmpeg编译

[Waring] 本文已过时 ,编译出的so已无法在最新的Android项目中使用,建议看以下这几篇文章
编译ffmpeg4.2.2
编译FFmpeg在Android中使用
编译FFmpeg4.3.1 并移植到Android app中使用
Android FFmpeg系列01–编译与集成
老生常谈-FFmpeg 的编译问题轻松搞定

在Android中执行FFmpeg命令
可以直接使用封装好的Android 第三方库,这样就可以实现很多基础的FFmpeg命令
FmpegCommand
EpMedia

Android FFmpeg so下载
Android FFmpeg 5.0.1/4.3.2 编译后的so文件,包含32位和64位so


以下是过时内容

配置NDK环境

如果没有配置NDK环境,需要先配置NDK的环境,具体配置可以看Ubuntu 配置Android NDK环境

编译

下载FFmpeg

接着,从官网下载FFmpeg,选择Old Releases可下载历史版本(老版本比较稳定且遇到问题容易在网上找到答案),比如 2.6.9

在这里插入图片描述

接着解压缩,放到任意目录下

新建 build_android.sh

然后新建一个build_android.sh脚本文件,内容如下

#!/bin/bash
make clean
export NDK=/home/heiko/Android/ndk/android-ndk-r10e/
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/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

其中,export NDK需要替换为你的NDK路径。
export SYSROOT中的android-9代表着是针对那个Android版本编译的,要尽可能低,这样可以兼容老版本的Android。
export PREFIX表示生成文件的目标路径。(pwd表示当前目录)

配置 configure

然后由于Android中无法识别ffmpeg生成的libpostproc.so.53这种so后缀的文件(Ubuntu能识别这种后缀,但是Android识别不了),所以我们需要修改configure,使其生成的文件变已so作为后缀的文件,比如libpostproc-53.so

配置configure,将configure中的下面的这些配置注释

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

如下图所示
在这里插入图片描述

接着给予权限

chmod -R 777 .  

配置编译环境

sudo apt install make      
sudo apt install make-guile  

开始编译

./build_android.sh  

这需要几分钟时间,完成后如图所示

在这里插入图片描述

然后,我们可以在ffmpeg目录下看到一个Android文件夹
在这里插入图片描述
可以看到,Android文件夹里有include文件夹(头文件)和lib文件夹(so文件),这就是我们开发要使用的文件,至此,ffmpeg就编译成功了。

FFmpeg so 介绍

在这里插入图片描述

  • avcodec:编解码 (最重要的库)
  • avformat:封装格式处理 (解封装)
  • avfilter:滤镜特效处理 (美颜相机)
  • avdevice:各种设备的输入输出 (基本不会用到)
  • avutil:工具库 (大部分库都需要这个库支持)
  • postproc:后加工 (基本不会用到)
  • swresample:音频采样数据格式转换
    • 比如32位转成16位的采样率
  • swscale:视频像素数据格式转换
    • 比如把视频转为YUV格式

代码示例可以看 \ffmpeg-2.6.9\doc\examples

其他

本文ffmpeg相关文件下载

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值