<p>腾讯课堂 《FFmpeg/WebRTC/RTMP音视频流媒体高级开发》 <a>https://ke.qq.com/course/468797?tuin=137bb271</a></p><p>
</p><h1>1 修改ffmpeg版本</h1><p>
</p><p>往srs服务推流这个步骤,用ffmpeg可以直接实现,用命令或者自己写代码封装相关接口,这个网上也有许多的例子,这里有个问题就是ffmpeg是不支持封装h265为flv推送rtmp的,所以需要修改相关的源码参考网址</p><p><a>https://github.com/runner365/ffmpeg_rtmp_h265</a></p><p/><p><strong>在我们之前编译ffmpeg4.2的基础上增加</strong></p><p>可以在我们现有的版本《 <a>https://www.yuque.com/linuxer/ffmcy9/llzzq8mdkryh6vvd?#</a> 《RTMP h265支持》 》,比如4.2版本上修改添加支持。</p><p>在原有编译版本上添加支持,我们主要修改, 如果使用我们的代码,则直接将 flv/flvdec.c/flvenc.c覆盖到ffmpeg-4.2.1/libavformat</p><p class="image-package"><img class="uploaded-img" src="https://img.haomeiwen.com/i12119754/0087de7f7bb428f5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p><p><strong>和FFmpeg4.2的区别</strong></p><p class="image-package"><img class="uploaded-img" src="https://img.haomeiwen.com/i12119754/0f7337147ce5e261.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p><p>
</p><p>flv.h</p><p class="image-package"><img class="uploaded-img" src="https://img.haomeiwen.com/i12119754/465feec5bdbac6d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p><p/><p>libavformat\flvdec.c flvenc.c</p><p class="image-package">主要是<img class="uploaded-img" src="https://img.haomeiwen.com/i12119754/766e3b1a8f92bd0e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/>相关的判断</p><p/><p><strong>完全重新编译</strong></p><p>编译步骤可以参考</p><p><a>https://github.com/runner365/srt_encoder/wiki/How-to-compile-cn</a></p><p/><h1>2 使用srs h265版本</h1><p><a>http://ossrs.net/lts/zh-cn/faq</a>, 由于265主要在GB中使用,所以265分支也迁移到了 srs-gb28181 </p><p>官方文档: </p><p><a>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</a></p><p/><p>编译</p><p><a>https://github.com/ossrs/srs-gb28181</a></p><p/><p>git clone <a>https://github.com/ossrs/srs-gb28181.git</a></p><p>cd srs-gb28181</p><p>git checkout feature/h265</p><p>cd trunk</p><p>./configure</p><p>
</p><p>配置文件:</p><p>./objs/srs -c ./conf/rtmp.conf</p><p>
</p><h1>3 测试rtmp推/拉流hevc示例</h1><p><strong>这里一定要注意,重新编译ffmpeg后,在执行ffmpeg命令时一定要确认调用的ffmpeg .so或.a是新编译的,可以通过ldd ffmpeg确定链接的库文件。</strong></p><p>
</p><p>在完成支持hevc in flv的定制化ffmpeg编译后,rtmp推流hevc视频编码,如下:</p><pre>ffmpeg -re -i source.flv -c:v libx265 -c:a aac -f flv rtmp://127.0.0.1/live/livestream</pre><p/><p>rtmp拉流hevc视频编码格式,如下:</p><pre>ffmpeg -i rtmp://127.0.0.1/live/livestream -f flv -y livestream.flv</pre><p/><p>播放:ffplay rtmp://127.0.0.1/live/livestream</p><p/><p>如果要播放rtmp推流H265, 然后HLS拉流,则使用配置文件:</p><p>./objs/srs -c ./conf/hls.conf</p><p/><p/><p>ffplay <a>http://127.0.0.1:8080/live/livestream.m3u8</a></p><p/><p/><h1>参考</h1><p><a>https://blog.csdn.net/qq_41632852/article/details/119635124</a></p><p>
</p><p/><p/><p>
</p><p>
</p>
网友评论