視頻直播中說的抓流和推流,是什麼意思,兩種有什麼區別?


推流,指的是把採集階段封包好的內容傳輸到伺服器的過程。介紹一下目前有主流的推送協議,以及各自的優缺點。

  • RTMP

RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的縮寫,是Adobe公司為Flash/AIR平台和伺服器之間音、視頻及數據傳輸開發的實時消息傳送協議。RTMP協議基於TCP,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。

RTMP協議中,視頻必須是H264編碼,音頻必須是AAC或MP3編碼,且多以flv格式封包。RTMP是目前最主流的流媒體傳輸協議,對CDN支持良好,實現難度較低,是大多數的直播平台的選擇。

不過RTMP有著一個最大的不足——不支持瀏覽器,且Adobe已不再更新。因此直播服務要支持瀏覽器的話,需要另外的推送協議支持。

  • HLS

Http Live Streaming是由Apple公司定義的基於HTTP的流媒體實時傳輸協議。它的原理是將整個流分為多個小的文件來下載,每次只下載若干個。伺服器端會將最新的直播數據生成新的小文件,客戶端只要不停的按順序播放從伺服器獲取到的文件,就實現了直播。基本上,HLS是以點播的技術實現了直播的體驗。因為每個小文件的時長很短,客戶端可以很快地切換碼率,以適應不同帶寬條件下的播放。

分段推送的技術特點,決定了HLS的延遲一般會高於普通的流媒體直播協議。

傳輸內容包括兩部分:一是M3U8描述文件,二是TS媒體文件。TS媒體文件中的視頻必須是H264編碼,音頻必須是AAC或MP3編碼。

由於數據通過HTTP協議傳輸,所以完全不用考慮防火牆或者代理的問題,而且分段文件的時長很短,不過HLS的 

  • WebRTC

WebRTC(Web Real-Time Communication),即「源自網頁即時通信」。WebRTC是一個支持瀏覽器進行實時語音、視頻對話的開源協議。WebRTC的支持者甚多,Google、Mozilla、Opera推動其成為W3C推薦標準。

WebRTC支持目前的主流瀏覽器,並且基於SRTP和UDP,即便在網路信號一般的情況下也具備較好的穩定性。

此外,WebRTC可以實現點對點通信,通信雙方延時低,是實現「連麥」功能比較好的選擇。

拉流是指伺服器已有直播內容,用指定地址進行拉取的過程。下面直接上圖,感覺會更清晰一點,詳情可點擊了解:https://www.upyun.com/live.html


目前的移動直播架構:推流,拉流應用圖示


作為一家快遞公司,在各個小區都有快遞公司,所以我提供兩種服務:

抓流服務:也就是上門取件

推流服務:由於你怕快遞員有非分之想,你選擇把物件送到小區內的快遞公司

懂沒?


推流是指用obs 等內容抓取軟體把內容傳輸到伺服器的過程,拉流是指伺服器上已經有直播內容,用指定地址進行拉取。


我代替樓主吼一下吧,我要我問一行字的問題,你就粘貼那麼大段的文字來回答好么。。。

視頻直播中說的抓流和推流,是什麼意思,兩種有什麼區別?

「抓流」應該指的是拉流吧?也就是英語中的pull,或者down streaming。這個指的是用戶端從伺服器拉去語音視頻流到客戶端播放。

推流,也就是英語中的publish/push,或者up streaming。這個指的是主播端把本地採集的語音視頻流推送到媒體伺服器。

拉流和推流的區別?還要說么?不言而喻了。有興趣可以看看這篇文章,裡面聊到更深層次的技術。

知乎專欄 直播平台如何使用RTMP實現視頻直播低延遲


咕~~(╯﹏╰)b 還以為是moba里的gank流和push流


推流是 把信號給到伺服器,拉流或者抓流 是伺服器信號轉出捕獲一次,進行分發


推薦閱讀:

TAG:視頻網站 | 視頻直播 |