乾貨:如何實現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版本(後續有其他版本).
2. 開啟轉發工具並配置.
3. 檢視轉發效果,請開啟SmartPlayer.exe, 輸入地址播放就好.
從上圖可以看出1080p的轉發時延非常低,接近直接播放rtsp時延。另外測試工具自帶的推送地址已經支援h265, 無需自己改伺服器,測試很方便。