干货:如何实现rtsp h265 转 rtmp (rtsp hevc 转 rtmp)并转发到CDN或自建服务器

简介:

      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版本(后续有其他版本).

image

     2. 打开转发工具并配置.

image

    3. 查看转发效果,请打开SmartPlayer.exe, 输入地址播放就好.

image

     从上图可以看出1080p的转发时延非常低,接近直接播放rtsp时延。另外测试工具自带的推送地址已经支持h265, 无需自己改服务器,测试很方便。

image

更多问题欢迎交流:  github   QQ群: 294891451   499687479 

相关文章
|
26天前
|
编解码 Linux C语言
探索C++与Live555实现RTSP服务器的艺术(一)
探索C++与Live555实现RTSP服务器的艺术
67 1
|
4月前
|
网络协议 Linux
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
171 0
|
26天前
|
编解码 C++ 流计算
探索C++与Live555实现RTSP服务器的艺术(三)
探索C++与Live555实现RTSP服务器的艺术
19 1
|
26天前
|
存储 编解码 算法
探索C++与Live555实现RTSP服务器的艺术(二)
探索C++与Live555实现RTSP服务器的艺术
41 1
|
3月前
|
云安全 缓存 安全
高防服务器、DDOS高防 IP 和高防 CDN该选择哪种好
选择高防服务器、高防IP和高防CDN时需要综合考虑多个方面,结合自身需求进行选择,我们先了解下三者的情况。
|
3月前
|
网络协议 调度 C语言
live555 RTSP服务器与客户端通信源码分析
live555已经发展了很多年,不过最新的live555版本,笔者没有编译通过,最终选择了2019.8.28的live555代码,如果有需要的同学,可以自行去Index of /pub/contrib/live555/ (videolan.org)去下载,不过需要自己去编译,我的编译环境是windows版本,网上有很多关于如何将其编译为VS版本的live555的,如果有需要的同学,可以在博客下留言,我会给你发一个(自己对一些代码进行了注释,不过都是自己的理解,不一定正确)。对于代码的分析:RTSP服务器使用的testOnDemandRTSPServer.cpp,RTSP客户端使用的testRT
81 0
|
3月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
|
3月前
|
编解码 Linux C语言
实现一个传输aac音频的rtsp服务器
实现一个传输aac音频的rtsp服务器
36 0
|
3月前
|
编解码 Linux C语言
实现一个传输h.264的rtsp服务器
实现一个传输h.264的rtsp服务器
47 0
|
3月前
|
应用服务中间件 nginx Windows
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频