天天看點

幹貨:如何實作RTSP推送H.264、RTSP推送H.265(hevc)

rtsp推送相關的資料和測試軟體比較少,本文介紹rtsp推送相關信令和測試效果:

1. rtsp推送流程.

主要分兩部分:第一部分先發送信令;第二部分發送rtp包。

 信令流程:

 1.1 先發送OPTIONS, OPTIONS比較常用,就不做詳細說明了。

1.2 發送ANNOUNCE, 發送ANNOUNCE主要是把要推送的音視訊資訊通過sdp格式傳給伺服器。關于sdp資訊如何構造,對于h264請參考rfc6184. h265請參考rfc7798. 下面舉兩個例子.

h264+aac ANNOUNCE:

ANNOUNCE rtsp://192.168.0.188:554/livexxxx.sdp RTSP/1.0

Content-Type: application/sdp

CSeq: 2

User-Agent: xxxyyy

Content-Length: 489 

v=0

o=- 0 0 IN IP4 127.0.0.1

s=dddookkk

c=IN IP4 192.168.0.188

t=0 0

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z00AKp2oHgCJ+WbgICAoAAADAAgAAAMBlCA=,aO48gA==; profile-level-id=4D002A

a=control:streamid=0

m=audio 0 RTP/AVP 97

a=rtpmap:97 MPEG4-GENERIC/44100/1

a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1208

a=control:streamid=1

h265(hevc) + aac ANNOUNCE:

ANNOUNCE rtsp://192.168.0.174:554/live3.sdp RTSP/1.0

User-Agent: mmmmd

Content-Length: 364

s=uvsdewewe

c=IN IP4 192.168.0.174

a=rtpmap:96 H265/90000

1.3 發送 SETUP,這個和播放基本一樣,請參考播放流程.

1.4 發送 RECORD,record之後,信令流程完成, 接下來發送rtp包即可。

關于rtp包的構造,h264 參考rfc6184。 h265參考 rfc7798。

接下來實際測試推送效果,從

github

或者大牛直播SDK

官網

下載下傳rtsp h264 h265推送工具和rtsp播放工具(請下載下傳windows版本測試).

1. 先打開rtsp推送程式SmartPublisherDemo.exe(測試h265推送請用64位exe) 進行配置:

幹貨:如何實作RTSP推送H.264、RTSP推送H.265(hevc)

2. 按上圖配置好後,點選 "推送rtsp"按鈕後會看到相應的播放位址:

幹貨:如何實作RTSP推送H.264、RTSP推送H.265(hevc)

3. 拷貝播放器位址,然後打開 SmartPlayer.exe, 進行播放即可:

幹貨:如何實作RTSP推送H.264、RTSP推送H.265(hevc)

4. 使用rtsp推送延時也非常低,可低至100多毫秒,下圖是測試延時的截圖:

幹貨:如何實作RTSP推送H.264、RTSP推送H.265(hevc)

可以看到,延時就100多毫秒,我是從家裡推送到公網伺服器,然後再拉取播放的.

小結:

rtsp相對于rtmp推送的優勢是可以用udp傳輸音視訊資料,udp傳輸可以避免延時累積,當然rtsp也可以用tcp傳輸rtp包, 上面的推送程式upd和tcp傳輸都支援。 另外rtsp協定本身就支援h265,不像rtmp還需要用一個非官方擴充去支援.  實際測試可以看出延時非常低,就幾百毫秒,這個延時可以滿足大多數低延時場景需求.  另外rtsp協定本身就是為實時流傳輸設計的,能更好的相容現有的監控系統等. rtsp推送更适合網際網路遠端監控等項目.

如有更多問題歡迎交流:   QQ群1: 294891451  QQ群2: 499687479

資料參考:

https://github.com/daniulive/SmarterStreaming