rtsp h265 转 rtmp,首先要对rtmp协议做扩展,目前国内已有相应扩展标准,国内开发者基本上都按这个扩展协议做的。协议层问题已解决。剩下关键问题是要实现rtmp h265推送模块, 支持rtmp h265 的server, rtmp h265播放模块。
rtmp h265 server 支持, 目前常用的nginx-rtmp 和 srs还不支持rtmp 265. 需要做些修改。 对于srs,和多个srs使用者交流后,有些人已经做过一个简单的支持,关键点就是增加h265类型的支持。
对于nginx rtmp,由于nginx rtmp 模块代码较少,支持265 很方便,也是增加265类型,解析HEVCDecoderConfigurationRecord,对相应模块做处理即可,大牛直播SDK有提供扩展rtmp H.265服务器,需要测试的开发者,可以加入我们交流群讨论。
rtmp h265 播放支持, 首先要从rtmp中解析出265,需要解析出h265 nal unit 和 HEVCDecoderConfigurationRecord. 265比264多个vps, 需要解析。另外就是 nal type 针对265需要处理。解析出nal units之后。下一个关键点就是解码,目前安卓部分手机已经支持h265硬解,或者用软解也可以。
rtmp h265 推送支持,如果已经有了 h265 nal unit, 用 vps, sps, pps 构造出HEVCDecoderConfigurationRecord, 按扩展协议打包rtmp包即可。
对于rtsp转发h265的话,还需要从rtsp 中拿到h265 nal unit, 这块有文章介绍过,有兴趣的可以参考下,https://blog.csdn.net/lsheevyfg/article/details/81206782。
上面是对方案的讨论,接下来我们看看实际转发效果。
1. 首选下载265转发工具和rtmp h265播放器, 可以从Github下载 windows版本(后续有其他版本).
2. 打开转发工具并配置.
3. 查看转发效果,请打开SmartPlayer.exe, 输入地址播放就好.
从上图可以看出1080p的转发时延非常低,接近直接播放rtsp时延。另外测试工具自带的推送地址已经支持h265, 无需自己改服务器,测试很方便。