1. 程式人生 > >幹貨:如何實現RTSP推送H.264、RTSP推送H.265(hevc)

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

測試軟件 fff ces ica star 參考 ofo 第一部分 pro

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
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)?進行配置:

技術分享圖片

  1. 按上圖配置好後,點擊?"推送rtsp"按鈕後會看到相應的播放地址:

技術分享圖片

  1. 拷貝播放器地址,然後打開?SmartPlayer.exe, 進行播放即可:

技術分享圖片

  1. 使用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

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