交叉编译ffmpeg5.0,并支持librtmp

本文详细介绍了如何在Win10+VMware的环境中,为armv71 GNU/Linux主机进行ffmpeg 5.0的交叉编译,涉及openssl、zlib、librtmp和x264的编译安装,以实现rtsp流处理和rtmp推流功能。
摘要由CSDN通过智能技术生成

1 前言

环境:Win10主机+VMware15.5+Ubuntu18.04.1

嵌入式主机:armv71 GNU/Linux

交叉编译工具:arm-linux-gnueabihf-gcc

登录用户:root

目标:交叉编译ffmpeg5.0,同时支持x264和rtmp,可在armv71主机上使用ffmpeg拉取前端摄像机的rtsp流,转成rtmp流,上推给rtmp服务器。

2 准备工作

2.1 编译安装openssl

1、代码下载

/source/old/1.0.2/index.htmlhttps://www.openssl.org/source/old/1.0.2/

 

 2、解压缩

tar -xzf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

3、配置交叉编译链

在编译之前,准备好交叉工具链,初始化编译工具交叉变量 CROSS_COMPILE

推荐用绝对路径:

export CROSS_COMPILE=/opt/arm/usr/bin/arm-linux-gnueabihf-
export CC=${CROSS_COMPILE}gcc

./config no-asm -shared --prefix=/usr/local/ssl --cross-compile-prefix= CROSS_COMPILE

no-asm:  在交叉编译过程中不使用汇编代码代码加速编译过程
shared: 生成动态连接库
no-async: 交叉编译工具链没有提供GNU C的ucontext库
–prefix=: 安装路径
–cross-compile-prefix=: 交叉编译工具

4、修改Makefile

配置完成后:手动修改生成的Makefile,并且找到有-m64的地方,全删之(只删除-m64这个关键字)(共2处)

5、编译安装

make
make install

2.2 编译安装zlib

1、代码下载

LIBPNG: PNG reference library - Browse /zlib/1.2.11 at SourceForge.nethttps://sourceforge.net/projects/libpng/files/zlib/1.2.11/

 2、解压缩

tar -vxf zlib-1.2.11.tar.xz
cd zlib-1.2.11

 3、配置编译

检查交叉编译工具链

CC=/opt/arm/usr/bin/arm-linux-gnueabihf-gcc

./configure --prefix=/usr/local/zlib
make 
make install

 2.3 编译安装librtmp

1、代码下载

git clone git://git.ffmpeg.org/rtmpdump

仅使用其中的librtmp即可

2、修改Makefile

指定安装路径

将其中的

CC=$(CROSS_COMPILE)gcc 
LD=$(CROSS_COMPILE)ld 
AR=$(CROSS_COMPILE)ar

修改成自己的交叉编译链

指定openssl路径

3、编译安装

make 
make install

 2.4 编译安装x264

1、代码下载

Branches · VideoLAN / x264 · GitLabx264, the best and fastest H.264 encoderhttps://code.videolan.org/videolan/x264/-/branchesx264-master.tar.bz2

解压缩

tar   -jxvf x264-master.tar.bz2

 2、编译配置

./configure --enable-static --enable-shared --disable-asm --prefix=/usr/local/x264 --host=arm-linux

3、修改config.mak文件

下边截图是修改后的

4、编译安装

make 
make install

3 编译ffmpeg

3.1 下载代码

从这里下载,所有版本都有,根据自己需要选择合适的版本

Index of /releaseshttp://ffmpeg.org/releases/我选择的是ffmpeg-5.0.tar.bz2

3.2 解压

tar   -jxvf ffmpeg-5.0.tar.bz2

3.3 配置

先修改configure文件librtmp和openssl 的lib路径,否则链接时,会出现找不到librtmp或openssl库函数的错误

 接下来

./configure --cross-prefix=$CROSS_COMPILE --enable-cross-compile --target-os=linux --cc="$CC" --arch=arm --prefix=/usr/local/arm_ffmpeg --disable-x86asm --enable-shared --enable-static --enable-pthreads --enable-network --enable-protocol=tcp --enable-demuxer=rtsp --enable-decoder=h264 --enable-parsers --enable-decoder=h264 --enable-decoder=aac --enable-muxer=mp4 --enable-protocol=file --enable-gpl --enable-ffmpeg --enable-librtmp --enable-libx264 --enable-openssl --enable-nonfree --extra-cflags="-I/usr/local/x264/include -I/usr/local/librtmp/include -I/usr/local/ssl/include" --extra-ldflags="-L/usr/local/librtmp/lib -L/usr/local/x264/lib -L/usr/local/ssl/lib" --extra-libs=-"ldl -fpic"

来个列表式的,方便查看

./configure  \
  --cross-prefix=$CROSS_COMPILE \   #编译工具路径
  --enable-cross-compile \           #使能交叉编译
  --target-os=linux \
  --cc="$CC" \  					 #交叉编译工具 
  --arch=arm \					 #选中架构arm
  --prefix=/usr/local/arm_ffmpeg \    #安装目录
  --disable-x86asm \				 #关闭x86asm
  --enable-shared \				 #生成动态库
  --enable-static \					 #生成静态库
  --enable-pthreads \				 #使能多线程,默认关闭
  --enable-network \
  --enable-protocol=tcp \
  --enable-demuxer=rtsp \
  --enable-decoder=h264 \
  --enable-parsers \
  --enable-decoder=h264 \
  --enable-decoder=aac \
  --enable-muxer=mp4 \
  --enable-protocol=file \
  --enable-gpl \
  --enable-ffmpeg \
  --enable-librtmp \
  --enable-libx264 \
  --enable-openssl \
  --enable-nonfree \
  --extra-cflags="-I/usr/local/x264/include -I/usr/local/librtmp/include -I/usr/local/ssl/include" \  	#指定x264,librtmp,openssl的include路径
  --extra-ldflags="-L/usr/local/librtmp/lib -L/usr/local/x264/lib -L/usr/local/ssl/lib" \  				#指定x264,librtmp,openssl的lib路径
  --extra-libs=-"ldl -fpic"

Configure完之后,会出现下列提示

不用管,下步直接make

3.4 编译安装

make –j8
make install

4 参考

编译过程中,参考了下边网友的文章,在此感谢。

1. ffmpeg交叉编译_平平无奇的小垃圾的博客-CSDN博客_ffmpeg交叉编译

2. ffmpeg编译与交叉编译_fangye945a的博客-CSDN博客_ffmpeg 交叉编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来灵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值