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) 進行配置:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zda1GbuRGbWdUY6hnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4gTOyQzMzETM1EjMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2. 按上圖配置好後,點選 "推送rtsp"按鈕後會看到相應的播放位址:
3. 拷貝播放器位址,然後打開 SmartPlayer.exe, 進行播放即可:
4. 使用rtsp推送延時也非常低,可低至100多毫秒,下圖是測試延時的截圖:
可以看到,延時就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