WebRTC影音探索
2020年,Adobe宣布停止對(duì) Flash播放器的支持。Flash歷經(jīng)多年終于走向終結(jié),雖然是眾望所歸,但它的退出卻對(duì)存在于許多流媒體工作流程中的一項(xiàng)重要技術(shù)——RTMP( Real-Time Messaging Protocol)影響重大。RTMP最初設(shè)計(jì)用于向Adobe Flash播放器傳輸音頻、視頻和其他數(shù)據(jù)。在全盛時(shí)期,RTMP曾是互聯(lián)網(wǎng)上傳輸視頻的最主要技術(shù)。它可以用于端到端,并能確保快速的實(shí)時(shí)傳輸。然而與過(guò)去相比,現(xiàn)在越來(lái)越多的設(shè)備和瀏覽器都不再支持RTMP。
雖然在編碼器和服務(wù)器之間傳輸視頻方面,RTMP仍然是一個(gè)可靠的視頻傳輸協(xié)議,但是對(duì)基于RTMP的播放來(lái)說(shuō),卻并非如此。Adobe也表示[1]:”鼓勵(lì)直播廠商將現(xiàn)有的Flash內(nèi)容遷移到新的開(kāi)放格式中去?!?/p>
在2020年的Streaming Media的一期雜志中,Robert Reinhard(流媒體視頻顧問(wèn))曾警告:“如果你正在使用Flash進(jìn)行低延時(shí)實(shí)時(shí)流媒體傳輸,那么你還有一年的時(shí)間(或者更短)將其遷移到WebRTC上。這意味著什么?意味著你在基于Flash的媒體服務(wù)器上所使用的的任何代碼都需要遷移到WebRTC(而非RTMP)上?!?/p>
然而,許多內(nèi)容發(fā)行商仍然在竭力將RTMP替換為用于視頻播放的實(shí)時(shí)格式。為什么?因?yàn)殡m然HLS和MPEG-DASH支持不同設(shè)備的高質(zhì)量流媒體傳輸,但是延遲超過(guò)30秒是這些基于HTTP技術(shù)的標(biāo)準(zhǔn)。確實(shí)存在這些協(xié)議的低延遲擴(kuò)展(LL-HLS和DASH的LL-CMAF),但是它們都無(wú)法達(dá)到很多公司追求的次秒級(jí)傳輸速度。除此之外,播放器、CDN和各種設(shè)備對(duì)于LL-HLS和LL-CMAF(用于DASH)的支持還處于早期階段。
對(duì)于實(shí)時(shí)視頻傳輸來(lái)說(shuō),WebRTC是你的唯一選擇,這也是它在最近幾年備受關(guān)注的原因。這項(xiàng)基于HTML5的技術(shù)為互聯(lián)網(wǎng)上的實(shí)時(shí)視頻傳輸提供了最快的方法。更重要的是,像RTMP在其全盛時(shí)期一樣,WebRTC也可以端到端使用。
但是WebRTC也有自己的局限,它被設(shè)計(jì)用于基于瀏覽器的編碼和小規(guī)模的流媒體傳輸,而這兩個(gè)特點(diǎn)都使它無(wú)法適用于某些直播場(chǎng)景。
WebRTC會(huì)是替代RTMP的最佳方案嗎?在開(kāi)發(fā)者中,這句話已經(jīng)成為了流行語(yǔ)。正如我將在下文所解釋的那樣,它取決于你所使用的支持部署的技術(shù)和你想達(dá)成的目標(biāo)。
RTMP vs. WebRTC: 對(duì)比
對(duì)比RTMP,WebRTC有以下幾個(gè)優(yōu)勢(shì):其一,它是一種新型、由IETF和W3C進(jìn)行標(biāo)準(zhǔn)化的開(kāi)源技術(shù)。所有的主流瀏覽器無(wú)需插件即可支持WebRTC,消除了由專(zhuān)有流媒體技術(shù)所帶來(lái)的互操作上的挑戰(zhàn)。除此之外,軟件開(kāi)發(fā)者社區(qū)不斷為WebRTC的開(kāi)發(fā)貢獻(xiàn)代碼,也使它受益匪淺。
其次,在傳輸速度低于500毫秒的情況下,WebRTC是目前延遲最低的協(xié)議。它也由此成為創(chuàng)建交互式視頻體驗(yàn)(從實(shí)時(shí)拍賣(mài)到直播購(gòu)物)的首選解決方案,同時(shí)對(duì)于那些想要超越競(jìng)爭(zhēng)對(duì)手的體育直播廠商來(lái)說(shuō),它也是一個(gè)非常具有吸引力的選擇。
向數(shù)目眾多的觀眾進(jìn)行大規(guī)模直播對(duì)于WebRTC來(lái)說(shuō)還存在困難。視頻聊天框架本來(lái)就不是為規(guī)?;O(shè)計(jì)的。幸運(yùn)的是,我們已經(jīng)開(kāi)發(fā)了一種解決方案來(lái)克服這種局限,我將在下文詳述。
在視頻生產(chǎn)方面,WebRTC僅使用Web瀏覽器就可以進(jìn)行簡(jiǎn)單的直播,但是對(duì)于希望使用硬件或者軟件解決方案控制編碼設(shè)置的直播廠商來(lái)說(shuō),基于瀏覽器的編碼并不理想。同樣,當(dāng)涉及到使用定時(shí)元數(shù)據(jù)的字幕和廣告標(biāo)記等功能時(shí),RTMP也比WebRTC更具優(yōu)勢(shì)。
WebRTC工作流程
所以,當(dāng)涉及到實(shí)時(shí)視頻流媒體傳輸時(shí),RTMP到底在哪里可以替換成WebRTC? 作為一種端到端技術(shù),WebRTC可分別用于推流、拉流或同時(shí)用于推、拉流。下面讓我們看下WebRTC工作流程兩端的優(yōu)勢(shì),以及它是如何在確保規(guī)?;耐瑫r(shí)應(yīng)用于編碼到傳輸?shù)恼麄€(gè)過(guò)程。
WebRTC在推流時(shí)替換RTMP
RTMP仍然是第一英里視頻貢獻(xiàn)的標(biāo)準(zhǔn),這其中有以下幾個(gè)原因。第一,RTMP獲得了來(lái)自直播編碼軟件和硬件的廣泛支持,同時(shí)許多社交媒體平臺(tái)也在使用它。編碼廠商已經(jīng)開(kāi)始向SRT等開(kāi)源協(xié)議添加支持,但是WebRTC一直僅限于基于瀏覽器的內(nèi)容發(fā)布。對(duì)于任何想要使用Web攝像頭和麥克風(fēng)直接在瀏覽器上進(jìn)行直播的人來(lái)說(shuō),WebRTC非常有用。但是對(duì)于想要使用專(zhuān)業(yè)編碼器進(jìn)行實(shí)時(shí)流媒體內(nèi)容傳輸?shù)膬?nèi)容發(fā)行商來(lái)說(shuō),就無(wú)法使用WebRTC推流。
因此Millicast的技術(shù)團(tuán)隊(duì)設(shè)計(jì)了WHIP(WebRTC HTTP Ingest Protocol)來(lái)解決這個(gè)難題。在與媒體服務(wù)器通信時(shí),WHIP提供了使用標(biāo)準(zhǔn)信令協(xié)議的編碼軟件和硬件,這樣就可以實(shí)現(xiàn)跨廠商的WebRTC推流。WHIP在實(shí)現(xiàn)WebRTC推流的同時(shí),還保留了WebRTC的低延遲優(yōu)勢(shì)(與RTMP相比),同時(shí)移除了編碼器和媒體服務(wù)器之間的連接障礙。
當(dāng)用于推流時(shí),WebRTC可以確保低延遲、強(qiáng)制加密并提供對(duì)于Opus和VP9等高級(jí)編解碼器的支持。因?yàn)橛辛薟HIP,WebRTC也正在成為一種可用于硬件和軟件編碼的格式。直播流程對(duì)編碼設(shè)置(包括碼率、編解碼器和編解碼器參數(shù)等)有更多的控制需求,而WHIP的出現(xiàn)使WebRTC可以直接和RTMP競(jìng)爭(zhēng)。
WebRTC在拉流時(shí)替換RTMP
瀏覽器不再支持RTMP導(dǎo)致播放端無(wú)法再使用它。當(dāng)今大部分直播廠商都在使用HLS進(jìn)行“最后一英里”的交付,但HLS的延遲要超過(guò)30秒。
目前你在傳輸視頻時(shí)正在使用哪些流媒體格式?
來(lái)源:Wowza的2021視頻流延遲報(bào)告[3]
當(dāng)涉及低延遲協(xié)議的替代方案,WebRTC是眾多協(xié)議中傳輸速度最快的。因此,如果你需要真正的交互(我們這里討論的是用于緊急響應(yīng)和遠(yuǎn)程監(jiān)控等場(chǎng)景的低于一秒的視頻傳輸),那么WebRTC將是你的最佳選擇。LL-HLS和用于DASH的LL-CMAF同樣也是不錯(cuò)的選擇,但是它們無(wú)法實(shí)現(xiàn)像WebRTC一樣的實(shí)時(shí)傳輸。
也就是說(shuō),WebRTC最初并不是為大規(guī)模直播場(chǎng)景設(shè)計(jì)的。我們過(guò)去曾鼓勵(lì)內(nèi)容發(fā)行商在向大量觀眾直播交互性內(nèi)容時(shí)使用調(diào)整后的HLS或者LL-HLS,但現(xiàn)在我們?yōu)榱私鉀Q這個(gè)問(wèn)題,已經(jīng)改進(jìn)了產(chǎn)品。
具體來(lái)說(shuō),我們開(kāi)發(fā)了一個(gè)新的特性:該特性可以在自定義的CDN上部署WebRTC,從而提供近于無(wú)限的規(guī)模。這個(gè)解決方案可以實(shí)現(xiàn)面向全球大規(guī)模觀眾的次秒級(jí)視頻傳輸[2]。
如圖中所示,當(dāng)以這種方式傳輸視頻時(shí),WebRTC可用于廣泛的工作流程中,包括WebRTC端到端,或者從RTMP到WebRTC。
在實(shí)現(xiàn)WebRTC時(shí)需要考慮的事
如果你正在考慮使用WebRTC代替RTMP,你需要將如下問(wèn)題納入考量:
1. 你是否需要雙向視頻或?qū)崟r(shí)交互?
交互式實(shí)時(shí)流媒體解決方案和WebRTC密不可分,缺一不可。只要你使用WebRTC進(jìn)行內(nèi)容發(fā)布和播放,就能實(shí)現(xiàn)低于500毫秒的流媒體傳輸。更重要的是,使用次秒級(jí)流媒體傳輸?shù)膽?yīng)用場(chǎng)景還可以利用RTMP到WebRTC的工作流程。同時(shí)還存在混合模型,其中交互視頻參與者可以觀看WebRTC視頻流,而被動(dòng)觀眾可以觀看由HLS傳輸?shù)木哂懈哐舆t的視頻流。
2. 你希望視頻內(nèi)容獲得大范圍傳播嗎?
所有的內(nèi)容發(fā)行商都希望他們的流媒體應(yīng)用大獲成功,擁有成千上萬(wàn)或者數(shù)百萬(wàn)的觀眾。然而,過(guò)多用戶可能使你的基礎(chǔ)設(shè)施不堪重負(fù)。傳統(tǒng)的WebRTC部署因無(wú)法利用自定義創(chuàng)建的CDN而限制了它的擴(kuò)展能力。所以如果你的目標(biāo)是觸達(dá)大量觀眾,一定要確保擁有穩(wěn)健的基礎(chǔ)設(shè)施。
結(jié)語(yǔ)
由于WebRTC被設(shè)計(jì)用于視頻聊天應(yīng)用,所以有兩個(gè)障礙阻礙了它在實(shí)時(shí)直播工作流程中的廣泛采用:
基于瀏覽器編碼的限制,以及在編碼軟件和硬件中缺少WebRTC能力。
規(guī)?;奶魬?zhàn):導(dǎo)致WebRTC在向成千上萬(wàn)(或更多)觀眾直播時(shí)很難使用。
幸運(yùn)的是,行業(yè)已經(jīng)為以上問(wèn)題找到了解決方法,使WebRTC成為了RTMP的強(qiáng)大替代方案(無(wú)論是在推流時(shí)還是在播放端)。
在我們的2021視頻流延遲報(bào)告中,我們發(fā)現(xiàn)WebRTC已成為用于推流的第二流行的格式,用于傳輸?shù)牡谌餍懈袷?。在各廠商為實(shí)現(xiàn)實(shí)時(shí)視頻直播而努力提高WebRTC可用性的前提下,我預(yù)計(jì)WebRTC的采用率將繼續(xù)增長(zhǎng)。
審核編輯 :李倩
-
編碼器
+關(guān)注
關(guān)注
45文章
3645瀏覽量
134578 -
開(kāi)源技術(shù)
+關(guān)注
關(guān)注
0文章
389瀏覽量
7942 -
WebRTC
+關(guān)注
關(guān)注
0文章
57瀏覽量
11262
原文標(biāo)題:使用WebRTC作為RTMP的替代方案
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論