腾讯课堂 《FFmpeg/WebRTC/RTMP音视频流媒体高级开发》 https://ke.qq.com/course/468797?tuin=137bb271
1 修改ffmpeg版本
往srs服务推流这个步骤,用ffmpeg可以直接实现,用命令或者自己写代码封装相关接口,这个网上也有许多的例子,这里有个问题就是ffmpeg是不支持封装h265为flv推送rtmp的,所以需要修改相关的源码参考网址https://github.com/runner365/ffmpeg_rtmp_h265
【资料图】
可以在我们现有的版本,比如4.2版本上修改添加支持。在原有编译版本上添加支持,我们主要修改, 如果使用我们的代码,则直接将 flv/flvdec.c/flvenc.c覆盖到ffmpeg-4.2.1/libavformat
和FFmpeg4.2的区别
flv.h
libavformat\flvdec.c flvenc.c主要是
相关的判断
完全重新编译
编译步骤可以参考https://github.com/runner365/srt_encoder/wiki/How-to-compile-cn
2 使用srs h265版本
http://ossrs.net/lts/zh-cn/faq, 由于265主要在GB中使用,所以265分支也迁移到了 srs-gb28181
官方文档: http://ossrs.net/lts/zh-cn/docs/v4/doc/hevc/#%E5%A6%82%E4%BD%95rtmp%E6%8E%A8%E6%8B%89%E6%B5%81hevc%E7%A4%BA%E4%BE%8B
编译https://github.com/ossrs/srs-gb28181
git clone https://github.com/ossrs/srs-gb28181.gitcd srs-gb28181git checkout feature/h265cd trunk./configure
运行配置文件:
./objs/srs -c ./conf/rtmp.conf
3 测试rtmp推/拉流hevc示例
这里一定要注意,重新编译ffmpeg后,在执行ffmpeg命令时一定要确认调用的ffmpeg .so或.a是新编译的,可以通过ldd ffmpeg确定链接的库文件。
在完成支持hevc in flv的定制化ffmpeg编译后,rtmp推流hevc视频编码,如下:
ffmpeg -re -i source.flv -c:v libx265 -c:a aac -f flv rtmp://127.0.0.1/live/livestream
rtmp拉流hevc视频编码格式,如下:
ffmpeg -i rtmp://127.0.0.1/live/livestream -f flv -y livestream.flv
播放:
ffplay rtmp://127.0.0.1/live/livestream
如果要播放rtmp推流H265, 然后HLS拉流,则使用配置文件:
./objs/srs -c ./conf/hls.conf
ffplay http://127.0.0.1:8080/live/livestream.m3u8
关键词: