辦公地址:武漢市漢陽(yáng)區(qū)漢陽(yáng)城云頂B2棟362-364
業(yè)務(wù)直線:(同微信)
編導(dǎo)A組熱線:18627781752
編導(dǎo)B組熱線:15623970772
平面設(shè)計(jì)熱線:15871811072
全國(guó)服務(wù)熱線:027-84212627
Qq:270143234 / 2219738351
為什么直播現(xiàn)場(chǎng)的信息,用戶通過(guò)手機(jī)或者網(wǎng)站就能很快的看到呢?為什么有時(shí)候網(wǎng)絡(luò)不穩(wěn)定,直播效果會(huì)有延遲呢?現(xiàn)場(chǎng)的視頻信號(hào)又是如何傳到網(wǎng)絡(luò)呢?
這些所有問(wèn)題的產(chǎn)生,都離不開(kāi)視頻直播中常說(shuō)的兩個(gè)詞:推流和拉流。
什么是推流?
推流,指的是把采集階段封包好的內(nèi)容傳輸?shù)椒?wù)器的過(guò)程。其實(shí)就是將現(xiàn)場(chǎng)的視頻信號(hào)傳到網(wǎng)絡(luò)的過(guò)程?!竿屏鳌箤?duì)網(wǎng)絡(luò)要求比較高,如果網(wǎng)絡(luò)不穩(wěn)定,直播效果就會(huì)很差,觀眾觀看直播時(shí)就會(huì)發(fā)生卡頓等現(xiàn)象,觀看體驗(yàn)很是糟糕。
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進(jìn)行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r(shí)通常在1–3秒,對(duì)于手機(jī)直播這種實(shí)時(shí)性要求非常高的場(chǎng)景,RTMP也成為手機(jī)直播中最常用的流傳輸協(xié)議。最后通過(guò)一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡(luò)斷,通過(guò)CDN進(jìn)行分發(fā)。
在直播場(chǎng)景中,網(wǎng)絡(luò)不穩(wěn)定是非常常見(jiàn)的,這時(shí)就需要Qos來(lái)保證網(wǎng)絡(luò)不穩(wěn)情況下的用戶觀看直播的體驗(yàn),通常是通過(guò)主播端和播放端設(shè)置緩存,讓碼率均勻。另外,針對(duì)實(shí)時(shí)變化的網(wǎng)絡(luò)狀況,動(dòng)態(tài)碼率和幀率也是最常用的策略。
直播中使用廣泛的「推流協(xié)議」一般是RTMP(Real Time Messaging Protocol——實(shí)時(shí)消息傳輸協(xié)議)。該協(xié)議是一個(gè)基于TCP的協(xié)議族,是一種設(shè)計(jì)用來(lái)進(jìn)行實(shí)時(shí)數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,主要用來(lái)在Flash/AIR平臺(tái)和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信。支持該協(xié)議的軟件包括Adobe Media Server/Ultrant Media Server/red5等。
什么是拉流?
拉流是指服務(wù)器已有直播內(nèi)容,根據(jù)協(xié)議類型(如RTMP、RTP、RTSP、HTTP等),與服務(wù)器建立連接并接收數(shù)據(jù),進(jìn)行拉取的過(guò)程。拉流端的核心處理在播放器端的譯碼和渲染,在互動(dòng)直播中還需集成聊天室、點(diǎn)贊和禮物系統(tǒng)等功能。
拉流端現(xiàn)在支持RTMP、HLS、HDL(HTTP-FLV)三種協(xié)議,其中,在網(wǎng)絡(luò)穩(wěn)定的情況下,對(duì)于HDL協(xié)議的延時(shí)控制可達(dá)1s,完全滿足互動(dòng)直播的業(yè)務(wù)需求。RTMP是Adobe的專利協(xié)議,開(kāi)源軟件和開(kāi)源庫(kù)都支持的比較好,延時(shí)一般在1-3秒。HLS是蘋果提出的基于HTTP的流媒體傳輸協(xié)議,優(yōu)先是跨平臺(tái)性比較好,HTML5可以直接打開(kāi)播放,移動(dòng)端兼容性良好,但是缺點(diǎn)是延遲比較高。
推流和拉流的區(qū)別?
用戶最終看到一條直播視頻,可能會(huì)通過(guò)兩種方式達(dá)成,一種是主動(dòng)把內(nèi)容傳輸?shù)椒?wù)器,緩存在邊緣節(jié)點(diǎn),終端用戶隨時(shí)可以調(diào)取觀看,這是推流;一種是當(dāng)終端用戶想要看某個(gè)內(nèi)容時(shí),將內(nèi)容從源站調(diào)取,并緩存到邊緣節(jié)點(diǎn),這是拉流。