天天看點

【視訊】視訊傳輸協定:RTSP、RTP、RTCP、RTMP、HTTP

一、RTSP、RTP、RTCP

RTSP、RTP、RTCP是一組協定,其中RTSP在應用層、RTP和RTCP在傳輸層。RTP用于傳輸流媒體資料,而RTCP對RTP進行控制、同步。

二、RTSP、RTMP、HTTP

1、共同點

RTSP、RTMP、HTTP都是用在應用層。理論上這三種協定都可以做直播和點播,但直播一般用RTSP和RTMP,點播用HTTP。

2、不同點

HTTP将資料作為檔案處理,是以HTTP不是流媒體協定,RTMP和RTSP是流媒體協定。

RTMP是Adobe的私有協定,未完全公開,RTSP和HTTP是共有協定。

RTMP一般傳輸flv,f4v格式流,RTSP傳輸ts,MP4格式流,HTTP沒有特定的流。

RTSP一般需要2-3個通道,資料和指令通道分開,RTMP和HTTP在一個通道上傳輸指令和資料。

三、直播傳輸流程和實作

參考部落格:https://www.cnblogs.com/stnlcd/p/7202155.html

  從網絡上接收視訊時首先要解協定(RTSP/RTMP/HTTP),然後是解格式(MKV,RMVB),之後才是将視訊(H264)和音頻(AAC)格式資料分别解碼為圖像(RGB/YUV)和聲音(PCM),再根據時間戳同步播放。

RTSP+RTP主要用于IPTV,原因是傳輸資料使用的是UDP,在網絡環境比較穩定的情況下,傳輸效率是比較高的;

RTMP主要用于網際網路音視訊傳輸,它使用的是TCP傳輸,因為網際網路環境相對較差,采用RTMP保證了視訊的傳輸品質,但是其傳輸延遲相對較高,傳輸效率相對較低。

使用RTMP技術的流媒體系統有一個非常明顯的特點:使用 Flash Player 作為播放器用戶端,而Flash Player 現在已經安裝在了全世界将近99%的PC上,是以一般情況下收看RTMP流媒體系統的視音頻是不需要安裝插件的。使用者隻需要打開網頁,就可以直接收看流媒體,十分友善。直播服務普遍采用了RTMP作為流媒體協定,FLV作為封裝格式,H.264作為視訊編碼格式,AAC作為音頻編碼格式。FLV是RTMP使用的封裝格式,H.264是當今實際應用中編碼效率最高的視訊編碼标準,AAC則是當今實際應用中編碼效率最高的音頻編碼标準。

librtmp是RTMP協定的實作,可以使用librtmp來實作協定的解析和資料的收發。直播伺服器可以基于nginx+rtmp實作;直播用戶端方面采用librtmp負責推流,FFmpeg負責編碼;收看用戶端采用VLC即可,因為VLC本身既可以解析RTMP流,又可以解析編碼後的視訊資料。

繼續閱讀