前言
剛剛接觸到視頻推流,搞不清楚rtmp和rtsp到底有什么區別
1.視頻傳輸
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流,又可以解析編碼后的視頻數據。
2.視頻壓縮
- 視頻壓縮分為有損壓縮和無損壓縮。
無損壓縮是采用一些壓縮算法壓縮視頻,但是壓縮完畢后還能夠真實的還原原始數據;
有損壓縮是借助於人眼的一些特性,丟棄一些特定的數據,但是壓縮完畢后的視頻效果還在人眼可以接受的范圍內的特定數據。
- 視頻壓縮編碼的主要原理是:
幀內編碼(變換編碼和熵編碼):像素點之間存在相關性。圖像變換到頻域可以實現去相關和能量集中。
幀間編碼(運動估計和運動補償):將圖像划分為一個個小區塊,進行預測。