项目背景介绍
ffmpeg本身也是支持rtmp推流,但是在我的实际开发时候,在调用 avformat_write_header的时候,不能正常发送amf的包,使用wiresharke解析时候,不能正确解析,故决定集成librtmp。
先编译librtmp库
下载rtmpdump代码
git clone git://git.ffmpeg.org/rtmpdump
使用msy2终端,打开目录
关于怎么使用msy2可以参考我前面的博客。这里不再赘述
cd librtmp
如下结构:
msy2 安装openssl
pacman -S mingw-w64-x86_64-openssl
修改编译的目标文件的保存位置
修改目录里面的Makefile 文件
这样编译后的文件,就放到这个目录下
使用librtmp自带的makefile 编译代码
make SYS=mingw make install SYS=mingw
结果
然后就会生成 librtmp.a 和 头文件在 librtmp_install
ffmpeg里面集成librtmp
关于ffmpeg集成其他它库,比如x264,fdk-aac,前面都有例子,我这前面博客都有过程描述,这里使用同样方法,在前面的基础上增加librtmp这个库
将librtmp_install 拷贝到ffmpeg统计目录
其他的库,也许用不到,你可以自己调整。 拷贝后结构如下:
编写编译脚本 build-x264-fdk-rtmp.sh
脚本内容如下:
# 当前目录
basepath=$(cd `dirname $0`;pwd)
# 获取当前目录的上层目录
parent_dir=$(dirname "$(pwd)")
echo ${basepath}
cd ${basepath}
./configure \
--prefix=${basepath}/ffmpeg_install \
--disable-static --enable-shared \
--disable-asm \
--enable-debug=3 \
--enable-libx264 --enable-gpl \
--enable-nonfree --enable-libfdk-aac \
--enable-librtmp \
--extra-cflags="-I${parent_dir}/x264_install/include -I${parent_dir}/fdkaac-install/include -I${parent_dir}/librtmp_install/include" \
--extra-ldflags="-L${parent_dir}/x264_install/lib -L${parent_dir}/fdkaac-install/lib -L${parent_dir}/librtmp_install/lib" \
make -j4
make install
编译:
我这个地方报了个错误
发现报错,找不到librtmp的pkgconfig
我执行一下
export PKG_CONFIG_PATH=/d/ffmpeg/librtmp_install/lib/pkgconfig/:$PKG_CONFIG_PATH
这个目录按照你实际情况来。
然后继续执行,结果:
使用库
我的例子里面是把bin目录里面所有的lib拷贝出来,放到工程库下,dll放到执行行程序同目录。librtmp_install/bin 目录下的rtmp的dll也一起拷贝到工程执行程序同目录。
7. 其他:
-
仓库: MediaPush
-
讲解视频地址:
-
联系我:
- 邮箱: gu19860621@163.com
- 微信: p13071210551