使用WebRTC作為RTMP的替代方案

livevideostack 發佈 2022-07-11T20:54:13.066794+00:00

▲掃描圖中二維碼或點擊閱讀原文▲了解音視頻技術大會更多信息作者:Barry Owen翻譯:Alex技術審校:劉連響影音探索#014#2020年,Adobe宣布停止對 Flash播放器的支持。


▲掃描圖中二維碼或點擊閱讀原文

了解音視頻技術大會更多信息



作者:Barry Owen

翻譯:Alex

技術審校:劉連響


影音探索#014#



2020年,Adobe宣布停止對 Flash播放器的支持。Flash歷經多年終於走向終結,雖然是眾望所歸,但它的退出卻對存在於許多流媒體工作流程中的一項重要技術——RTMP( Real-Time Messaging Protocol)影響重大。RTMP最初設計用於向Adobe Flash播放器傳輸音頻、視頻和其他數據。在全盛時期,RTMP曾是網際網路上傳輸視頻的最主要技術。它可以用於端到端,並能確保快速的實時傳輸。然而與過去相比,現在越來越多的設備和瀏覽器都不再支持RTMP。


雖然在編碼器和伺服器之間傳輸視頻方面,RTMP仍然是一個可靠的視頻傳輸協議,但是對基於RTMP的播放來說,卻並非如此。Adobe也表示[1]:」鼓勵直播廠商將現有的Flash內容遷移到新的開放格式中去。」


在2020年的Streaming Media的一期雜誌中,Robert Reinhard(流媒體視頻顧問)曾警告:「如果你正在使用Flash進行低延時實時流媒體傳輸,那麼你還有一年的時間(或者更短)將其遷移到WebRTC上。這意味著什麼?意味著你在基於Flash的媒體伺服器上所使用的的任何代碼都需要遷移到WebRTC(而非RTMP)上。」


然而,許多內容發行商仍然在竭力將RTMP替換為用於視頻播放的實時格式。為什麼?因為雖然HLS和MPEG-DASH支持不同設備的高質量流媒體傳輸,但是延遲超過30秒是這些基於HTTP技術的標準。確實存在這些協議的低延遲擴展(LL-HLS和DASH的LL-CMAF),但是它們都無法達到很多公司追求的次秒級傳輸速度。除此之外,播放器、CDN和各種設備對於LL-HLS和LL-CMAF(用於DASH)的支持還處於早期階段。



對於實時視頻傳輸來說,WebRTC是你的唯一選擇,這也是它在最近幾年備受關注的原因。這項基於HTML5的技術為網際網路上的實時視頻傳輸提供了最快的方法。更重要的是,像RTMP在其全盛時期一樣,WebRTC也可以端到端使用。


但是WebRTC也有自己的局限,它被設計用於基於瀏覽器的編碼和小規模的流媒體傳輸,而這兩個特點都使它無法適用於某些直播場景。


WebRTC會是替代RTMP的最佳方案嗎?在開發者中,這句話已經成為了流行語。正如我將在下文所解釋的那樣,它取決於你所使用的支持部署的技術和你想達成的目標。


RTMP vs. WebRTC: 對比

對比RTMP,WebRTC有以下幾個優勢:其一,它是一種新型、由IETF和W3C進行標準化的開源技術。所有的主流瀏覽器無需插件即可支持WebRTC,消除了由專有流媒體技術所帶來的互操作上的挑戰。除此之外,軟體開發者社區不斷為WebRTC的開發貢獻代碼,也使它受益匪淺。


其次,在傳輸速度低於500毫秒的情況下,WebRTC是目前延遲最低的協議。它也由此成為創建交互式視頻體驗(從實時拍賣到直播購物)的首選解決方案,同時對於那些想要超越競爭對手的體育直播廠商來說,它也是一個非常具有吸引力的選擇。


向數目眾多的觀眾進行大規模直播對於WebRTC來說還存在困難。視頻聊天框架本來就不是為規模化而設計的。幸運的是,我們已經開發了一種解決方案來克服這種局限,我將在下文詳述。


在視頻生產方面,WebRTC僅使用Web瀏覽器就可以進行簡單的直播,但是對於希望使用硬體或者軟體解決方案控制編碼設置的直播廠商來說,基於瀏覽器的編碼並不理想。同樣,當涉及到使用定時元數據的字幕和廣告標記等功能時,RTMP也比WebRTC更具優勢。


WebRTC工作流程


所以,當涉及到實時視頻流媒體傳輸時,RTMP到底在哪裡可以替換成WebRTC? 作為一種端到端技術,WebRTC可分別用於推流、拉流或同時用於推、拉流。下面讓我們看下WebRTC工作流程兩端的優勢,以及它是如何在確保規模化的同時應用於編碼到傳輸的整個過程。


WebRTC在推流時替換RTMP


RTMP仍然是第一英里視頻貢獻的標準,這其中有以下幾個原因。第一,RTMP獲得了來自直播編碼軟體和硬體的廣泛支持,同時許多社交媒體平台也在使用它。編碼廠商已經開始向SRT等開源協議添加支持,但是WebRTC一直僅限於基於瀏覽器的內容發布。對於任何想要使用Web攝像頭和麥克風直接在瀏覽器上進行直播的人來說,WebRTC非常有用。但是對於想要使用專業編碼器進行實時流媒體內容傳輸的內容發行商來說,就無法使用WebRTC推流。


因此Millicast的技術團隊設計了WHIP(WebRTC HTTP Ingest Protocol)來解決這個難題。在與媒體伺服器通信時,WHIP提供了使用標準信令協議的編碼軟體和硬體,這樣就可以實現跨廠商的WebRTC推流。WHIP在實現WebRTC推流的同時,還保留了WebRTC的低延遲優勢(與RTMP相比),同時移除了編碼器和媒體伺服器之間的連接障礙。


當用於推流時,WebRTC可以確保低延遲、強制加密並提供對於Opus和VP9等高級編解碼器的支持。因為有了WHIP,WebRTC也正在成為一種可用於硬體和軟體編碼的格式。直播流程對編碼設置(包括碼率、編解碼器和編解碼器參數等)有更多的控制需求,而WHIP的出現使WebRTC可以直接和RTMP競爭。


WebRTC在拉流時替換RTMP


瀏覽器不再支持RTMP導致播放端無法再使用它。當今大部分直播廠商都在使用HLS進行「最後一英里」的交付,但HLS的延遲要超過30秒。


目前你在傳輸視頻時正在使用哪些流媒體格式?



當涉及低延遲協議的替代方案,WebRTC是眾多協議中傳輸速度最快的。因此,如果你需要真正的交互(我們這裡討論的是用於緊急響應和遠程監控等場景的低於一秒的視頻傳輸),那麼WebRTC將是你的最佳選擇。LL-HLS和用於DASH的LL-CMAF同樣也是不錯的選擇,但是它們無法實現像WebRTC一樣的實時傳輸。


也就是說,WebRTC最初並不是為大規模直播場景設計的。我們過去曾鼓勵內容發行商在向大量觀眾直播交互性內容時使用調整後的HLS或者LL-HLS,但現在我們為了解決這個問題,已經改進了產品。


具體來說,我們開發了一個新的特性:該特性可以在自定義的CDN上部署WebRTC,從而提供近於無限的規模。這個解決方案可以實現面向全球大規模觀眾的次秒級視頻傳輸[2]。



如圖中所示,當以這種方式傳輸視頻時,WebRTC可用於廣泛的工作流程中,包括WebRTC端到端,或者從RTMP到WebRTC。


在實現WebRTC時需要考慮的事

如果你正在考慮使用WebRTC代替RTMP,你需要將如下問題納入考量:


1. 你是否需要雙向視頻或實時交互?


交互式實時流媒體解決方案和WebRTC密不可分,缺一不可。只要你使用WebRTC進行內容發布和播放,就能實現低於500毫秒的流媒體傳輸。更重要的是,使用次秒級流媒體傳輸的應用場景還可以利用RTMP到WebRTC的工作流程。同時還存在混合模型,其中交互視頻參與者可以觀看WebRTC視頻流,而被動觀眾可以觀看由HLS傳輸的具有更高延遲的視頻流。


2. 你希望視頻內容獲得大範圍傳播嗎?


所有的內容發行商都希望他們的流媒體應用大獲成功,擁有成千上萬或者數百萬的觀眾。然而,過多用戶可能使你的基礎設施不堪重負。傳統的WebRTC部署因無法利用自定義創建的CDN而限制了它的擴展能力。所以如果你的目標是觸達大量觀眾,一定要確保擁有穩健的基礎設施。


結語

由於WebRTC被設計用於視頻聊天應用,所以有兩個障礙阻礙了它在實時直播工作流程中的廣泛採用:


  1. 基於瀏覽器編碼的限制,以及在編碼軟體和硬體中缺少WebRTC能力。
  2. 規模化的挑戰:導致WebRTC在向成千上萬(或更多)觀眾直播時很難使用。


幸運的是,行業已經為以上問題找到了解決方法,使WebRTC成為了RTMP的強大替代方案(無論是在推流時還是在播放端)。


在我們的2021視頻流延遲報告中,我們發現WebRTC已成為用於推流的第二流行的格式,用於傳輸的第三流行格式。在各廠商為實現實時視頻直播而努力提高WebRTC可用性的前提下,我預計WebRTC的採用率將繼續增長。




注釋:

[1] https://blog.adobe.com/en/publish/2017/07/25/adobe-flash-update#gs.ctytij

[2] https://www.wowza.com/products/streaming-cloud/webrtc-broadcasting?utm_source=wowza&utm_medium=website&utm_campaign=realtime-streaming-scale

[3] https://www.wowza.com/blog/2021-video-streaming-latency-report


References:

https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=139351

https://www.wowza.com/streaming-engine

https://www.wowza.com/blog/what-is-webrtc

https://www.wowza.com/blog/what-is-low-latency-and-who-needs-it

https://www.wowza.com/blog/complete-guide-to-live-streaming

https://www.wowza.com/blog/webrtc-use-cases-for-professional-streaming


作者簡介:


Barry Owen, Wowza的視頻流專家和解決方案工程副總裁,Barry擁有超過25年的SaaS、基於雲的和實時流媒體平台的經驗,致力於為客戶打造創新型解決方案。


致謝:

本文已獲得作者Barry Owen授權翻譯和發布,特此感謝。


原文連結:

https://www.wowza.com/blog/using-webrtc-as-rtmp-alternative





關鍵字: