rtsp推送相關的資料和測試軟件比較少,本文介紹rtsp推送相關信令和測試效果:html
1. rtsp推送流程. git
主要分兩部分:第一部分先發送信令;第二部分發送rtp包。github
信令流程:windows
1.1 先發送OPTIONS, OPTIONS比較經常使用,就不作詳細說明了。服務器
1.2 發送ANNOUNCE, 發送ANNOUNCE主要是把要推送的音視頻信息經過sdp格式傳給服務器。關於sdp信息如何構造,對於h264請參考rfc6184. h265請參考rfc7798. 下面舉兩個例子.app
h264+aac ANNOUNCE:tcp
ANNOUNCE rtsp://192.168.0.188:554/livexxxx.sdp RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: xxxyyy
Content-Length: 489 ide
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
Content-Type: application/sdp
CSeq: 2
User-Agent: mmmmd
Content-Length: 364
v=0
o=- 0 0 IN IP4 127.0.0.1
s=uvsdewewe
c=IN IP4 192.168.0.174
t=0 0
m=video 0 RTP/AVP 96
a=rtpmap:96 H265/90000
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
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) 進行配置:
2. 按上圖配置好後,點擊 "推送rtsp"按鈕後會看到相應的播放地址:
3. 拷貝播放器地址,而後打開 SmartPlayer.exe, 進行播放便可:
4. 使用rtsp推送延時也很是低,可低至100多毫秒,下圖是測試延時的截圖:
能夠看到,延時就100多毫秒,我是從家裏推送到公網服務器,而後再拉取播放的.
小結:
rtsp相對於rtmp推送的優點是能夠用udp傳輸音視頻數據,udp傳輸能夠避免延時累積,固然rtsp也能夠用tcp傳輸rtp包, 上面的推送程序upd和tcp傳輸都支持。 另外rtsp協議自己就支持h265,不像rtmp還須要用一個非官方擴展去支持. 實際測試能夠看出延時很是低,就幾百毫秒,這個延時能夠知足大多數低延時場景需求. 另外rtsp協議自己就是爲實時流傳輸設計的,能更好的兼容現有的監控系統等. rtsp推送更適合互聯網遠程監控等項目.