音視頻 | 視頻直播中說的抓流和推流,是什么意思,兩種有什么區(qū)別?
推流,指的是把采集階段封包好的內(nèi)容傳輸?shù)椒?wù)器的過程。介紹一下目前有主流的推送協(xié)議,以及各自的優(yōu)缺點。
RTMP
RTMP是Real Time Messaging Protocol(實時消息傳輸協(xié)議)的縮寫,是Adobe公司為Flash/AIR平臺和服務(wù)器之間音、視頻及數(shù)據(jù)傳輸開發(fā)的實時消息傳送協(xié)議。RTMP協(xié)議基于TCP,包括RTMP基本協(xié)議及RTMPT/RTMPS/RTMPE等多種變種。
RTMP協(xié)議中,視頻必須是H264編碼,音頻必須是AAC或MP3編碼,且多以flv格式封包。RTMP是目前最主流的流媒體傳輸協(xié)議,對CDN支持良好,實現(xiàn)難度較低,是大多數(shù)的直播平臺的選擇。
不過RTMP有著一個最大的不足——不支持瀏覽器,且Adobe已不再更新。因此直播服務(wù)要支持瀏覽器的話,需要另外的推送協(xié)議支持。
HLS
Http Live Streaming是由Apple公司定義的基于HTTP的流媒體實時傳輸協(xié)議。它的原理是將整個流分為多個小的文件來下載,每次只下載若干個。服務(wù)器端會將最新的直播數(shù)據(jù)生成新的小文件,客戶端只要不停的按順序播放從服務(wù)器獲取到的文件,就實現(xiàn)了直播?;旧希琀LS是以點播的技術(shù)實現(xiàn)了直播的體驗。因為每個小文件的時長很短,客戶端可以很快地切換碼率,以適應(yīng)不同帶寬條件下的播放。
分段推送的技術(shù)特點,決定了HLS的延遲一般會高于普通的流媒體直播協(xié)議。
傳輸內(nèi)容包括兩部分:一是M3U8描述文件,二是TS媒體文件。TS媒體文件中的視頻必須是H264編碼,音頻必須是AAC或MP3編碼。
由于數(shù)據(jù)通過HTTP協(xié)議傳輸,所以完全不用考慮防火墻或者代理的問題,而且分段文件的時長很短,不過HLS的
WebRTC
WebRTC(Web Real-Time Communication),即“源自網(wǎng)頁即時通信”。WebRTC是一個支持瀏覽器進行實時語音、視頻對話的開源協(xié)議。WebRTC的支持者甚多,Google、Mozilla、Opera推動其成為W3C推薦標(biāo)準(zhǔn)。
WebRTC支持目前的主流瀏覽器,并且基于SRTP和UDP,即便在網(wǎng)絡(luò)信號一般的情況下也具備較好的穩(wěn)定性。
此外,WebRTC可以實現(xiàn)點對點通信,通信雙方延時低,是實現(xiàn)“連麥”功能比較好的選擇。
拉流是指服務(wù)器已有直播內(nèi)容,用指定地址進行拉取的過程。下面直接上圖,感覺會更清晰一點,詳情可點擊了解:https://www.upyun.com/live.html

音視頻開發(fā)學(xué)習(xí)群:960994558 期待你的加入
