發佈日期:

CMAF – 媒體封裝格式介紹

CMAF介紹(Common Media Application Format)

CMAF(Common Media Application Format,通用媒體應用格式)是一種專為網絡媒體傳輸設計的標準。CMAF旨在簡化不同裝置和網絡環境之間的媒體流適配和交付,從而提高流媒體的性能和覆蓋範圍。CMAF是一種媒體封裝格式。CMAF被設計為簡化在不同裝置和網絡環境之間的媒體流適配和交付,從而提高流媒體的性能和覆蓋範圍。CMAF檔案通常具有.cmf.mp4擴展名。

CMAF(Common Media Application Format,通用媒體應用格式)是一種媒體封裝格式,類似於FLV(Flash Video)和MP4(MPEG-4 Part 14)。CMAF旨在簡化在不同裝置和網絡環境之間的媒體流適配和交付,以提高流媒體的性能和覆蓋範圍。

與FLV和MP4等其他封裝格式相比,CMAF的一個主要優勢在於它的兼容性和靈活性。CMAF可以應對各種不同的網絡環境和裝置能力,並且可以與多種流媒體協議(如HLS和MPEG-DASH)無縫地配合使用。

CMAF的特點

CMAF的主要特點包括:

  1. 單一檔案格式:CMAF允許使用單一檔案格式來適配多種媒體流協議,例如HLS(HTTP Live Streaming)和MPEG-DASH(Dynamic Adaptive Streaming over HTTP)。這使得內容提供商能夠更容易地在各種裝置和網絡上傳輸和管理媒體內容。
  2. 切片:CMAF將媒體流切成較小的片段(通常稱為chunks),這些片段可以在不同品質層次之間進行無縫切換,以適應不同的網絡條件和裝置能力。這有助於實現更低的延遲和更高的播放質量。
  3. 編碼效率:CMAF支持各種編解碼器,例如H.264(AVC)和H.265(HEVC),以實現高效的媒體編碼。此外,CMAF還支持多種音頻編解碼器,例如AAC和Opus。
  4. 整合DRM(數字版權管理):CMAF允許整合各種DRM技術,如Widevine、PlayReady和FairPlay,以保護內容的版權。

總之,CMAF是一種簡化網絡媒體傳輸的標準,它有助於提高流媒體的性能、覆蓋範圍和兼容性。

CMAF的延遲

CMAF(Common Media Application Format,通用媒體應用格式)主要用於適配和交付HLS(HTTP Live Streaming)和MPEG-DASH(Dynamic Adaptive Streaming over HTTP)等流媒體協議。CMAF的目標是在不同裝置和網絡環境之間提供高效的媒體流適配和交付,而非專注於低延遲。

由於CMAF依賴於HTTP,其延遲通常會比使用基於UDP的協議(如SRT或RTP)高。HTTP協議需要較長的時間來建立連接、請求和接收數據,這導致了較大的延遲。此外,CMAF通常用於分段媒體流,每個分段的持續時間也會增加延遲。

然而,CMAF的延遲性能可以通過使用CMAF的低延遲模式(CMAF-LLC)來改善。CMAF-LLC使用chunked encoding傳輸技術來實現低延遲,這允許客戶端在接收到完整的媒體分段之前開始解碼和播放。這樣可以將延遲降低到可接受的範圍,但仍然可能高於使用基於UDP的協議,如SRT。

總之,儘管使用CMAF的延遲可能較長,但通過使用CMAF-LLC可以改善延遲性能。然而,對於實時應用或低延遲要求非常嚴格的場景,使用基於UDP的協議,如SRT或RTP,可能是更合適的選擇。

發佈日期:

Publish HEVC live streaming by OBS to SRS via RTMP

After OBS Studio 29.1, they added support for Enhanced RTMP, it is now possible to push HEVC streaming via RTMP, and SRS also support HEVC over RTMP and HTTP-FLV v6.0.2+.

Here is a simple tutorial on how to use OBS to push HEVC streams to SRS.

OBS support H.265 over RTMP v29.1+

The original RTMP protocol cannot support high-compression video formats such as HEVC or AV1. But from OBS Studio 29.1 Beta, OBS adds support for the updated: Enhanced RTMP. For more detail, please refer to: Enable AV1, HEVC via RTMP to YouTube.

Therefore, the first step to push an HEVC stream via RTMP from OBS is to download the latest version of OBS. (Download here: OBS Studio 29.1 Beta Release Page).

SRS support H.265 over RTMP v6.0.42+

  • RTMP: Support enhanced RTMP specification for HEVC, v6.0.42.
  • Player: Upgrade mpegts.js to support it.

Enhanced RTMP specification: https://github.com/veovera/enhanced-rtmp

First, start SRS v6.0.42+ with HTTP-TS support:

./objs/srs -c conf/http.ts.live.conf

Pulish HEVC via RTMP from OBS

  1. Your OBS version should be greater than v29.1, than open File -> Setting
  2. Select Stream -> Service to Custom…
  3. Select Output -> Output Mode to Advanced, than choice Encoder to HEVC
  4. Click Start Streaming
  5. Check your streaming from SRS console
  6. Preview your streaming by SRS Player
發佈日期:

什麼是WebRTC

文章轉載

這篇文章翻譯自: What is WebRTC and how does it work? Real-time communication with WebRTC

什麼是WebRTC

WebRTC代表網路實時通訊。 它是一種非常令人興奮、強大且具有高度破壞性的尖端技術和流媒體協議。

WebRTC與HTML5相容,您可以使用它直接在瀏覽器和裝置之間新增實時媒體通訊。 最好的部分之一是,您無需在瀏覽器中安裝外掛的任何先決條件即可做到這一點。 Webrtc正逐漸得到所有主要現代瀏覽器供應商的支援,包括Safari、Google Chrome、Firefox、Opera等。

多虧了WebRTC影片流技術,您可以將實時影片直接嵌入到基於瀏覽器的解決方案中,為您的觀眾創造引人入勝的互動式流媒體體驗,而不必擔心延遲。

現在,影片,特別是直播,是我們快速變化的通訊需求不可或缺的一部分。 隨著社交距離的增加,WebRTC幫助我們滿足這些通訊需求,並增加我們與實時通訊的互動。

WebRTC元件

我們將使用客戶端-A和客戶端-B作為示例來解釋WebRTC的以下元件。

SDP(會話描述協議)

SDP是一個簡單的基於字串的協議,它在瀏覽器之間共享支援的程式碼器。

在我們的例子中,

  • 客戶端 A 創建其 SDP(稱為報價)並將其保存為本地 SDP,然後與客戶端 B 共享。
  • Client-B收到Client-A的SDP,保存為遠程SDP。
  • 客戶端 B 創建其 SDP(稱為答案)並將其保存為本地 SDP,然後與客戶端 A 共享。
  • Client-A收到Client-B的SDP,保存為遠程SDP。

信令伺服器(Signaling Server)負責等體之間的這些SDP傳輸。

讓我們假設客戶端A可能支援H264、VP8和VP9編解碼器用於影片、Opus和PCM編解碼器用於音訊。 客戶端-B可能只支援H264用於影片,只支援Opus編碼器用於音訊。

在這種情況下,客戶端-A和客戶端-B將使用H264和Opus作為編解碼器。 如果對等體之間沒有共同的程式碼器,則無法建立對等通訊。

ICE(交互連接建立)

Interactive Connectivity Establishment (ICE) 用於 Internet 上的兩個節點必須盡可能直接通信的問題,但是 NAT 和防火牆的存在使得節點之間難以相互通信。

它是一種網絡技術,利用 STUN(NAT 會話遍歷實用程序)和 TURN(在 NAT 周圍使用中繼遍歷)在兩個節點之間建立盡可能直接的連接。

WebRTC STUN 服務器NAT 的會話遍歷實用程序) 

STUN Server負責獲取一台機器的所有地址。例如,我們的計算機通常在 192.168.0.0 網絡中有一個本地地址,當我們連接到www.whatismyip.com時,我們會看到第二個地址,這個 IP 地址實際上是我們互聯網網關(調製解調器,調製解調器,路由器等),所以讓我們定義 STUN 服務器:STUN 服務器讓對等方知道他們的公共和本地 IP 地址。

順便說一下,Google 還提供了一個免費的 STUN 服務器 (stun.l.google.com:19302)。

 

WebRTC TURN  Server  (繞過NAT使用中繼遍歷)

TURN(Traversal Using Relays around NAT)是一種協議,可幫助 WebRTC 應用程序穿越網絡地址轉換器 (NAT) 或防火牆。TURN Server 允許客戶端通過中間服務器發送和接收數據。

TURN 協議是 STUN 的擴展。 有時,由於 NAT/Firewall,從STUN服務器 獲取的地址不能用於建立對等點之間的對等連接。在這種情況下,數據通過TURN服務器中繼

在我們的例子中,

  • Client-A通過STUN服務器找到自己的本地地址和公網地址,並通過Signaling Server將這些地址發送給Client-B。從 STUN 服務器收到的每個地址都是 ICE 候選地址。
  • Client-B 做同樣的事情,從 STUN 服務器獲取本地和公共 IP 地址,並將這些地址通過 Signaling Server 發送給 Client-A。
  • Client-A 收到 Client-B 的地址並通過發送特殊的 ping 來嘗試每個 IP 地址以創建與 Client-B 的連接。如果客戶端 A 收到來自任何 IP 地址的響應,它會將該地址及其響應時間和其他性能憑證放入列表中。最後,Client-A 根據其性能選擇最佳地址。
  • Client-B 做同樣的事情以連接到 Client-A

RTP(實時協議)

RTP 是在UDP之上傳輸實時數據的成熟協議。在 WebRTC 中,音頻和視頻通過 RTP 傳輸。RTP 有一個姊妹協議,名為 RTCP(實時控制協議),它在 RTP 通信中提供 QoS。RTSP  (實時流協議)在數據通信中也使用 RTP 協議。

WebRTC 信令服務器

最後一部分是Signaling Server,WebRTC 中沒有定義。如上所述,Signaling Server 用於在 Client-A 和 Client-B 之間發送 SDP 字符串和 ICE Candidates。信令服務器還決定哪些對等點相互連接。WebSocket 技術是與信令服務器進行通信的首選方式。

發佈日期:

使用OBS來推流H265

使用OBS來推流H265

OBS也在v29板之後支持了HEVC推流,支持利用RTMP的封裝方式來推送H265編碼的串流格式,若電腦沒有可支持硬編碼的GPU,其CPU編碼所採取的編碼方案是QuickSync HEVC。

若是電腦有可支持硬編碼的GPU,則下拉選單會增加該硬件編碼的編碼選項

並且可以錄製SVT-AV1、AOM-AV1和HEVC的格式的影片

發佈日期:

高壓縮比編碼格式的介紹 – AV1

高壓縮比編碼格式AV1介紹

AV1是一種免費、開源的視頻編解碼器,由Alliance for Open Media(AOMedia)聯盟開發。它是H.265(HEVC)的競爭對手,旨在提供更高的壓縮效率和更好的視頻質量。
AV1使用了許多新技術來提高壓縮效率,例如可變帶寬預測、可變塊大小和可變熵編碼等。與H.265相比,AV1在相同的比特率下可以提供更高的視頻質量。同時,AV1還具有更好的自適應流媒體性能,可以更好地適應網絡帶寬的變化。
AV1可以支持多種分辨率和色彩空間,包括8位、10位和12位色彩深度。此外,它還可以支持HDR(高動態範圍)和WCG(廣色域)等高級視頻格式,以提供更真實的圖像質量。
由於AV1是一種開放標準,並且沒有專利費用,因此它被廣泛用於在線視頻流媒體服務和其他應用,例如YouTube、Netflix、Amazon Prime Video等。同時,AV1還適用於各種類型的視頻內容,包括電影、電視節目、動畫和遊戲。

常見的編碼器

SVT-AV1和AOM-AV1

SVT-AV1和AOM-AV1都是AV1編碼器,不過它們有幾個不同之處:

  • 開發者:SVT-AV1是由英特爾開發的,而AOM-AV1是由Alliance for Open Media(AOM)開發的。
  • 編碼質量:SVT-AV1相對於AOM-AV1來說,可以提供更高的編碼質量,尤其是在高比特率下。
  • 編碼速度:AOM-AV1的編碼速度相對於SVT-AV1來說更快,這對於需要實時編碼的場景非常重要。
  • 適用範圍:SVT-AV1更適用於需要高質量視頻編碼的場景,如影片後期製作等;而AOM-AV1更適用於實時編碼的場景,如視頻通話、視頻會議等。

甚麼是AV1 SVC

AV1 SVC中的SVC是指可伸縮視頻編碼(Scalable Video Coding)。可伸縮視頻編碼是一種視頻編碼技術,可以將視頻數據分成多個層級,每個層級可以根據不同的要求進行編碼和解碼。這種編碼技術可以在不同的設備和網絡帶寬上提供不同的視頻質量和分辨率。在AV1 SVC中,視頻數據被分成多個空間和時間層級。空間層級是根據空間分辨率進行編碼的,例如低分辨率圖像和高分辨率圖像。時間層級是根據時間分辨率進行編碼的,例如低幀率和高幀率圖像。這些層級可以按需選擇和合併,以提供適合設備和網絡帶寬的最佳視頻質量。+

AV1 SVC可以提供更高的編碼效率和更好的視頻質量,同時可以適應不同的設備和網絡環境。這使得它非常適合用於實時視頻流傳輸、視頻會議和移動通信等應用場景。AV1是第一個支持SVC的編解碼器。對於那些對關於SVC是如何發揮作用的更多細節感興趣的人,Alex E.博士在2016年寫了一篇很好的解釋性博文。寫的是關於VP9,大多數點對AV1有效的內容。

SVT-AV1和AOM-AV1都支持可伸縮視頻編碼(SVC),但是它們支持的SVC規格略有不同。具體而言:

  • SVT-AV1支持SVC的規格是MPEG-5 Part 2 LCEVC(Low Complexity Enhancement Video Coding),這是一種用於增強現有編碼器的規格,可以提高編碼效率和視頻質量。
  • AOM-AV1支持的SVC規格是AV1 Scalable Video Technology(SVT),這是一種基於AV1的可伸縮視頻編碼技術,可以實現在不同的網絡帶寬和終端設備之間動態調整視頻質量和分辨率。

非常適合用於會議場合

AV1旨在與下一波WebRTC視頻創新集成:端到端加密,SVC和獨立於編解碼器的轉發。因此,這與視頻編解碼器無關,而與下一代架構有關。

1. 隨著WebRTC現在通過可插入流(和SFrame)合併了E2E加密,並且NSA現在推薦E2E安全性,由於有效負載可能是不透明的,因此會議系統需要RTP標頭擴展來轉發數據包。因此,如果瀏覽器和編解碼器不支持可插入流或與下一代編解碼器集成的轉發頭擴展名,則將無法滿足NSA的要求,並且會議供應商將無法提供完整的功能。

2. SVC支持對於會議很重要。AV1內置了SVC;在HEVC中,它是一個擴展。Dependency Descriptor(在AV1 RTP有效負載規範中定義)優於用於空間可伸縮性模式的Framemarking RTP標頭擴展。如果瀏覽器(和下一代編解碼器)不支持帶有轉發頭擴展名的SVC,那麼它就沒有競爭力。

3. AV1包含屏幕編碼工具作為基本功能,而不是像HEVC中的擴展。這是會議的主要競爭優勢。”

屏幕共享

對於文本內容以及超高動態內容,在對屏幕內容進行編碼時,AV1都非常高效。實際上,AV1實時的性能非常優越,以至於像Cisco在Webex中所做的那樣,AV1實時可能只部署在單個使用案例中。

在共享屏幕或應用程序時,如果選擇了“優化運動和視頻”,並且您所在的機器至少有四個內核,則支持傳輸AV1。任何至少有兩個內核的機器都支持接收AV1。只要會議的所有參與者都支持AV1,AV1就會自動用於共享此類屏幕內容,否則它將自動恢復為H.264。

有趣的是,這里分別提到了4和2個內核的約束條件。思科在2019年6月的大蘋果大會上進行現場演示時也發表了同樣的觀點。

我們將在下一個部分中繼續討論性能的問題,但是為了提供相關的背景信息,MacBook Air自2008年以來一直使用具有2個內核的Intel core-2芯片,並且自2011年以來在MacBook Pro中具有4個或更多內核的Intel i7或更高版本。就筆記本電腦和台式機而言,預計擁有4個內核並不是一個大問題。

端到端加密

E2EE是下一件值得關注的問題。也許是因為這是webrtc最初許下的承諾之一。又或許是因為它成為了一個過度使用的營銷術語,而Zoom已經變得遍體鱗傷。也許是因為大多數人仍然聲稱擁有它,實際上卻沒有。

關於E2EE,對這個問題最好的回應之一是Emil Ivov的這篇演講。

雖然許多人認為E2EE加密只是一種視頻會議或聊天應用程序功能,但它在整個媒體行業中都以縮寫“DRM”(數字版權管理)的形式使用。然而,傳統的DRM在瀏覽器和媒體播放器中的實現並不是真正的端到端的,只涵蓋了交付這一模塊。當人們上傳他們的內容到一個平台時仍然需要信任這個平台(以及任何可以合法訪問或不合法訪問該平台的人)與他們的原始內容。

真正的E2EE要求在對媒體進行編碼時在源處對媒體進行加密,並且僅在播放時對其進行解密。它允許內容提供商不信任該平台。

WebRTC可通過插入流API方案來得到了廣泛的應用,因為它可以用於很多方面。它是使您能夠訪問媒體的API,也是啟用E2EE的必要步驟。但是,它本身沒有加密功能或加密密鑰管理功能。

推流端支持AV1的相關資料

SRS在4.0.91開始支持經過WebRTC去推流AV1
RTC: Support av1 for Chrome M90 enabled it. 4.0.91
事實上,這已經是瀏覽器內建就可以做到的了。針對WEBRTC而言,Chrome已經在90版之後支持AV1編碼
Google Chrome 90 正式版發佈,支援 AV1 解碼

另外騰訊雲則可支持使用AV1格式推流
實現直播AV1 編碼

解碼端支持AV1的相關資料

騰訊雲有自己開發出可支援AV1透過FLV格式來解碼
播放AV1格式視頻

播放AV1視頻

通過支持AV1的播放器,按播放步驟3中生成的地址進行播放即可。在播放器的選擇上,可以選擇已支持AV1的播放器,也可以對自有播放器進行改造。

已支持AV1的播放器

App 客戶端

1. ExoPlayer已支持AV1,用的libgav1
2. ijkplayer FFmpeg 版本陳舊,可以升級FFmpeg 並集成dav1d

Web 端

1. dash.js已經支持(解碼取決於瀏覽器,Chrome 支持)
2. shaka-player已經支持(解碼取決於瀏覽器,Chrome 支持)

PC 端

VLC PC 版,支持AV1 in FLV、HEVC in FLV, 可按需下載Windowos 版& MacOS 版

發佈日期: 1 則留言

OBS在版本29版之後增加的新的編碼支持(H265及AV1)

OBS支持HEVC推流

OBS在v29版本之後支持了HEVC推流,支持利用RTMP的封裝方式來推送H265編碼的串流格式,若電腦沒有可支持硬編碼的GPU,其CPU編碼所採取的編碼方案是QuickSync HEVC。

若是電腦有可支持硬編碼的GPU,則下拉選單會增加該硬件編碼的編碼選項

支持AV1及HEVC的錄影格式

並且可以錄製SVT-AV1、AOM-AV1和HEVC的格式的影片

發佈日期:

為SRS6編譯支持HTTP-FLV的FFMPEG檔案

SRS介紹

SRS是一個簡單高效的實時視頻服務器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
是一個運營級的互聯網直播服務器集群並發7.5k+,支持多種轉碼,RTMP->HLS,RTMP->FLV等,支持HTTP回調,RTMP0.1s延時
在HTTP-FLV的低延遲實踐方案上,可以說是繼FMS之後,非常有用心地在更新、維護的一個開源專案

主要開發者很熱心地回答問題,相關的文件也隨著時間越來越完整,使用的人數也越來越多,是一個高效能且穩定的開源串流服務器。

SRS6.0已支持H.265編碼格式

在SRS 6.0之中,很開心我們終於看到SRS支持H265了,這其中很重要的一個工作就是我們需要在推流端能夠讓RTMP的FLV格式推流能夠支持H265。
但是,若我們使用從FFMPEG官網下載的.EXE檔案,即便我們使用ffmpeg -version顯示支持H265,在實際推H265的流時仍然會發生錯誤。

錯誤訊息如下圖

這個錯誤代表說,官方所提供的版本雖然支持H.265,但是卻不支持使用FLV來封裝H.265的編碼格式。

為FFmpeg增加支持HEVC over RTMP的補丁

對於SRS6.0支持HEVC over RTMP的詳細說明於此: https://github.com/ossrs/srs/issues/465

支持 HEVC over RTMP 或 FLV 的規範和用法。runner365為FFmpeg提供了FFmpeg 4.1/5.1/6.0 的補丁,以支持通過 RTMP 或 FLV 的 HEVC。Intel也有針對此功能的補丁。

這裡面提到說,SRS 6之所以能夠支持H265 over RTMP是因為使用了runner365自己為ffmpeg所增加的補丁功能。官方的版本並不支持HEVC over RTMP,若我們希望使用RTMP來推流H265,則需要重新編譯包含這份補丁的FFMPEG執行檔案。

另外要注意的是,雖然,但是應該是它們採用HEVC支持RTMP的實作方式與SRS6.0使用的FFMPEG方案並不一致,若是使用OBS的v29.0.2推H265的流到SRS伺服器,伺服器並沒有辦法正確的解析串流內容,因此,在推流時,一定要使編譯過的(runner365的補丁版本)、可支援HEVC over RTMP的FFMPEG來推流,才可以正確把H265的流推送到SRS。

這邊是官方如何編譯ffmpeg的教學:
https://github.com/ossrs/srs/issues/465#ffmpeg-tools

使用ffmpeg推流HEVC格式的影片,其重點在於將vcodec指定為libx265

ffmpeg -i sample.mp4 -c:v libx265 -b:v 350k -f flv rtmp://127.0.0.1/live/livestream

以下指令可推送極低延遲的H.265影片

ffmpeg -i sample.mp4 -c:v libx265 -crf 28 -x265-params profile=fast -preset veryfast -tune zerolatency -b:v 300k -minrate 300k -maxrate 300k -f flv rtmp://127.0.0.1/live/livestream

如何在linux裡面編譯支持H265 over rtmp的ffmpeg

支持 HEVC over RTMP 或 FLV 的規範和用法。 runner365 為 FFmpeg 提供了 FFmpeg 4.1/5.1/6.0 的補丁,以支持通過 RTMP 或 FLV 的 HEVC。

在編譯ffmpeg之前,要先編譯libx264

cd ~/git
git clone https://code.videolan.org/videolan/x264.git
cd ~/git/x264
./configure --prefix=$(pwd)/build --disable-asm --disable-cli --disable-shared --enable-static
make -j10
make install


以及libx265

cd ~/git
git clone https://bitbucket.org/multicoreware/x265_git.git
cd ~/git/x265_git/build/linux
cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/build -DENABLE_SHARED=OFF ../../source
make -j10
make install


接著載入HEVC over RTMP/FLV的補丁:

cd ~/git
git clone -b 5.1 https://github.com/runner365/ffmpeg_rtmp_h265.git
cp ~/git/ffmpeg_rtmp_h265/flv.h ~/git/FFmpeg/libavformat/
cp ~/git/ffmpeg_rtmp_h265/flv*.c ~/git/FFmpeg/libavformat


然後編譯ffmpeg

cd ~/git/FFmpeg
env PKG_CONFIG_PATH=~/git/x264/build/lib/pkgconfig:~/git/x265_git/build/linux/build/lib/pkgconfig \
./configure \
  --prefix=$(pwd)/build \
  --enable-gpl --enable-nonfree --enable-pthreads --extra-libs=-lpthread \
  --disable-asm --disable-x86asm --disable-inline-asm \
  --enable-decoder=aac --enable-decoder=aac_fixed --enable-decoder=aac_latm --enable-encoder=aac \
  --enable-libx264 --enable-libx265 \
  --pkg-config-flags='--static'
make -j10


嘗試推流

./ffmpeg -stream_loop -1 -re -i ~/srs/doc/source.flv -acodec copy -vcodec libx265 \
  -f flv rtmp://localhost/live/livestream
發佈日期:

WEBM影片格式介紹

WEBM格式是一種媒體文件格式,開源為Web使用設計,主要用於視頻的播放。

WebM簡介

WebM 是一個開源的媒體文件格式,主要用於封裝使用 VP8 或 VP9 編碼的視頻流和使用 Vorbis 或 Opus 編碼的音頻流。這個格式是由 Google 主導開發的,並於 2010 年首次推出。

以下是一些 WebM 格式的特點和詳情:

1. 設計目的

WebM 主要設計用於在線流媒體傳輸,特別是作為 HTML5 的 <video> 標籤的一部分。它旨在提供一個開放、高效、免版權費的視頻壓縮方案。

2. 視頻和音頻編碼

  • 視頻:VP8 或 VP9
  • 音頻:Vorbis 或 Opus

3. 優勢

  • 開放和免費:WebM 是一個完全開源和免費的格式,這意味著任何人都可以使用和分發它,無需支付任何費用。
  • 高效壓縮:使用 VP9 編碼的 WebM 文件可以提供與 H.264 相似的視頻質量,但文件大小通常更小。
  • 廣泛支持:大部分主流瀏覽器,如 Chrome、Firefox 和 Opera,都支持 WebM 格式的播放。

4. 缺點

  • 兼容性問題:一些瀏覽器(如 Safari)和一些媒體播放器可能不原生支持 WebM 格式。
  • 硬體支持限制:與某些其他視頻格式相比,硬體支持可能較少。

5. 適用場景

由於 WebM 的高效壓縮和開放性質,它特別適合用於網頁視頻、視頻會議、流媒體服務等場景。

6. 文件結構

WebM 使用 Matroska 容器格式,這是一個流行的開源媒體容器格式,可以容納多種編碼的音頻和視頻流。

可使用的傳輸協議

  1. HTTP/HTTPS:作為最常見的Web傳輸協議,HTTP和HTTPS可用於傳輸WEBM文件。這是在網頁中嵌入和播放WEBM視頻的標準方法。
  2. RTSP (Real-Time Streaming Protocol):用於控制多媒體流的傳輸,可以用於WEBM格式的傳輸。
  3. HLS (HTTP Live Streaming):由Apple開發的基於HTTP的流媒體通信協議,也可用於傳輸WEBM格式。
  4. DASH (Dynamic Adaptive Streaming over HTTP):另一種基於HTTP的適應流媒體傳輸協議,支持WEBM格式。
  5. FTP (File Transfer Protocol):用於在客戶端和服務器之間傳輸文件的協議,可以用於傳輸WEBM文件。
  6. WebSocket:允許在Web瀏覽器和服務器之間建立全雙工通信通道,也可用於傳輸WEBM數據。
  7. WebRTC:允許Web瀏覽器進行即時通信,也可以用來傳輸WEBM格式的視頻。

優缺點分析

優點:

  1. 開放標準: WEBM是一個免費並開源的格式,這意味著它不受專利限制,可以自由使用。
  2. 高質量和高效編碼: WEBM使用VP8/VP9視頻編碼,這些編碼器提供了與其他流行格式相當的視頻質量,但文件大小更小。
  3. 廣泛支持: 大多數現代Web瀏覽器都支持WEBM格式,使其成為網絡視頻的理想選擇。
  4. 支持HTML5: WEBM被設計為與HTML5 <video> 標籤完全兼容,使其在網頁中的集成變得簡單。
  5. 支持透明度: VP8/VP9支持透明度(Alpha Channel),允許視頻有透明背景。

缺點:

  1. 軟件兼容性: 雖然大多數現代瀏覽器支持WEBM,但一些舊的或非主流的瀏覽器和媒體播放器可能不支持。
  2. 專業編輯支持有限: 相比其他格式如MP4,WEBM在專業視頻編輯軟件中的支持可能較少。
  3. 不是所有設備都支持: 一些移動設備和媒體播放器可能不支持WEBM格式。
  4. 沒有廣泛的工業標準: 雖然WEBM在Web環境中表現出色,但它還沒有像MP4那樣成為廣泛接受的工業標準。
  5. 音頻格式限制: WEBM通常使用Opus或Vorbis作為音頻編碼,這可能不是所有應用的最佳選擇。

由Google開發的其他格式

WEBP 是一種圖像格式,用於同時提供有損和無損壓縮。同樣也是由Google開發,目的是加速圖片在網頁上的加載速度。

要把.jpg轉成.webp可使用下面的語法

ffmpeg -i input.jpg -c:v libwebp output.webp

QUIC

  • QUIC則是一個多路復用的傳輸層協議,使用UDP進行數據傳輸。
  • 它的目的是減少連接建立的延遲,並且改善在不可靠網絡中的數據傳輸性能。
  • QUIC還包括了一個內置的TLS,增強了安全性。

WEBM和QUIC解決了網絡中不同的問題。WEBM專注於視頻編碼和播放,而QUIC則專注於連接和數據傳輸的效率和可靠性。Google作為一個網絡技術的領先公司,一直在推動和創造各種新的技術標準,以改進整個互聯網的性能和體驗。

發佈日期:

TCP/UDP協議中的串流協定

基於或可以使用UDP (User Datagram Protocol)的協定

RTP(Real-time Transport Protocol)

RTP(Real-time Transport Protocol,即時傳輸協定)是一個網絡協定,用於交付音頻和視頻等多媒體數據流。以下是RTP的一些關鍵特性和細節:

  1. 即時性:RTP旨在實時交付數據,這意味著它需要以最小的延遲和抖動來傳輸數據。
  2. 協議層次:RTP通常運行在UDP之上,這樣可以降低延遲,但可能會導致一些封包丟失。在某些情況下,它也可以運行在TCP上。
  3. 封包結構:RTP封包包括了一個標頭和有效負載。標頭包括有關封包的資訊,如序列號、時間戳等,用於同步和順序排列。有效負載則包括媒體數據。
  4. 同步和排序:RTP的頭部包含一個序列號,用於標識每個數據包。這使得接收端能夠檢測丟失的數據包並重新排序接收到的數據包。在實時通信中,尤其是視頻和音頻流,這一功能非常重要,因為它可以讓接收端正確地播放數據。每個RTP數據包還包含一個時間戳,用於表示數據的取樣時刻。這可以讓接收端同步不同類型的媒體流(例如音頻和視頻),並控制播放的速度和節奏。
  5. 與RTCP的組合使用:RTP通常與RTCP(RTP控制協議)一同使用。RTCP可以提供有關媒體傳輸質量的反饋,如丟包率、抖動等,這有助於調整和改進傳輸質量。
  6. 多播和單播:RTP支持單播和多播傳輸,使其能夠服務於一對一通信和一對多通信的場景。
  7. 可擴展性:RTP本身是一個相對簡單的協議,但它的設計允許通過擴展標頭和其他機制來添加新功能。
  8. 安全性:RTP可以與SRTP(安全RTP)結合使用,以提供加密和數據完整性保護。

RTP(Real-time Transport Protocol)和WebRTC(Web Real-Time Communication)是兩個密切相關但有所不同的技術。

  1. 定義和目的
    • RTP:是一個協議,用於實時傳輸多媒體數據,例如音頻和視頻流。它可以運行在各種應用和平台上。
    • WebRTC:是一個開放的框架,允許Web瀏覽器進行即時通信(RTC)。它包括一組協議和API,用於在Web瀏覽器之間建立P2P連接。
  2. 組件和協議
    • RTP:是實時數據傳輸的核心協議之一,通常與RTCP(RTP控制協議)一起使用。
    • WebRTC:使用了多個協議和技術,其中RTP就是其中之一,用於媒體數據的實時傳輸。WebRTC還使用了其他協議,如STUN/TURN/ICE(用於NAT穿透和對等發現)和DTLS/SRTP(用於安全性)。
  3. 應用範圍
    • RTP:不限於Web,可用於各種音頻和視頻通信應用。
    • WebRTC:主要用於Web應用,允許瀏覽器進行視頻和音頻通信。
  4. 傳輸層
    • RTP:通常運行在UDP上,也可以在TCP上。但是RTP在TCP上運行時,可能會有一些效能方面的考量,由於RTP自身具有序列號,用於檢測丟失的數據包並重新排序接收到的數據包,與TCP的可靠傳輸機制重疊。另外,TCP的可靠傳輸機制需要確認(ACK)機制,可能會增加傳輸的延遲
    • WebRTC:使用RTP作為其媒體數據的傳輸協議,並使用UDP作為傳輸層協議。

在WebRTC應用中,你可能需要使用WebSocket作為信令通道,以此幫助建立和協調P2P連接。在這種情況下,WebSocket用於傳送元數據(例如SDP描述和ICE結果),而WebRTC用於傳送實時語音、視頻和數據。

RTSP(Real Time Streaming Protocol)

RTMP 和 RTSP 都是使用 TCP 進行控制信令傳輸,但它們在傳輸媒體數據的方式上有所不同。RTMP 使用 TCP 進行媒體數據的傳輸,而 RTSP 使用 RTP/RTCP 在 UDP 上進行媒體數據的傳輸傳輸。RTSP允許客戶端通過建立和控制媒體流會話來請求和傳輸實時媒體數據。

以下是RTSP的一些特點和功能:

  1. 實時性:RTSP主要用於實時傳輸音頻和視頻等實時媒體數據,能夠提供較低的傳輸延遲,適用於實時的音視頻通訊。
  2. 客戶端/服務器模型:RTSP採用客戶端/服務器模型,客戶端通過發送請求來控制服務器上的媒體流,並獲取媒體數據。
  3. 控制功能:RTSP支持控制功能,客戶端可以發送請求來控制媒體流的播放、暫停、快進、倒退等操作。
  4. 媒體描述:RTSP支持媒體描述功能,客戶端可以通過請求獲取媒體流的描述信息,如編解碼器信息、媒體流格式等。
  5. 使用RTP/RTCP:RTSP常用與RTP(Real-time Transport Protocol)和RTCP(RTP Control Protocol)結合使用,以在網絡上傳輸實時媒體數據。

RTSP在視頻監控、視頻會議、流媒體直播等場景中得到廣泛應用。它為實時媒體數據的傳輸提供了一種靈活、高效的通信機制,使實時音視頻通訊和流媒體播放成為可能。

SRT(Secure Reliable Transport)


SRT(Secure Reliable Transport)是一種基於UDP的開源傳輸協定,由Haivision公司發起並由SRT聯盟持續開發。它的主要目的是優化在公共網路(如互聯網)上進行高品質視訊串流的性能。

SRT旨在解決在廣播等高品質視訊串流場景下,對於低延遲、丟包率低的傳輸要求。它在UDP之上實現了數據包重傳機制,並且加入了AES加密,以確保傳輸的安全性。此外,SRT還提供了一個預測網路傳輸性能的機制(稱為「SRT預測模型」),該模型可動態調整傳輸參數,以優化傳輸性能並減少延遲。

因此,SRT協定將UDP的低延遲特性與TCP的可靠傳輸特性相結合,旨在在公共網路上提供一種安全、可靠、低延遲的視訊傳輸解決方案。這使得它在如廣播、遠程生產和OTT串流等領域中得到了廣泛應用。

QUIC (Quick UDP Internet Connections)

Quick UDP Internet Connections(QUIC)是一種實驗性的傳輸層協議,旨在優化網絡連接性能並提高網絡傳輸的安全性。QUIC主要依賴於用戶數據報協議(UDP)而非傳統的傳輸控制協議(TCP) 。這使得 QUIC 能夠降低網絡延遲、提高連接速度,並在保持安全性的同時減少握手次數

要使用QUIC,您需要遵循以下幾個步驟:

  1. 確保支持QUIC協議的瀏覽器或客戶端要使用QUIC,首先您確保的瀏覽器或客戶端支持該協議。許多現代瀏覽器(如Google Chrome和Mozilla Firefox)已默認啟用QUIC。如果使用或其他瀏覽器,請查看其文檔以確認是否支持QUIC,並了解如何實現。
  2. 使用支持QUIC的服務器為了充分利用QUIC協議的優勢,您需要確保服務器端也支持QUIC。您可以選擇支持QUIC的雲服務商,如Google雲平台,或者手機搭建支持QUIC的服務器,例如使用Caddy或nginx 。
  3. 配置服務器 如果您要搭建自己的服務器,需要配置服務器以啟用QUIC。對於Caddy和nginx等服務器軟件,您可以參考相應的文檔來配置QUIC支持。確保您已正確配置服務器以使用QUIC,並且需要時提供相應的加密證書。
  4. 測試QUIC連接一旦服務器和客戶端都支持QUIC,您就可以通過訪問設置為使用QUIC的網站或服務來測試連接。可以使用瀏覽器的開發者工具檢查網絡連接是否成功地使用了QUIC協議。
  5. 監控和優化使用QUIC協議後,您可能需要監控連接性能,並根據需要進行調整。可以使用各種網絡分析工具來評估QUIC連接的表現,並根據結果優化服務器配置。

MPEG-DASH(Dynamic Adaptive Streaming over HTTP)

在使用HTTP-TS進行傳輸時,需要對數據進行分片,以提高傳輸效率和穩定性。可以使用各種分片技術,例如MPEG-DASH的架構技術、HLS的架構M3U8文件等。雖然名稱中包含“HTTP”,但MPEG-DASH可以在任何數據傳輸協議上運行,包括UDP

MPEG-DASH 通常使用 HTTP 協議,因此它可以通過標準的 HTTP 端口 80 進行傳輸。如果是使用 HTTPS 的話,則是端口 443。這樣的設計使得 MPEG-DASH 能夠更容易通過防火牆和代理伺服器,並且在現有的 Web 基礎設施上部署,因為它使用的是 Web 通信的標準端口和協議。

這種基於 HTTP 的流媒體傳輸方式還有其他的好處,例如緩存和兼容性,因為許多現有的 HTTP 伺服器和網絡設備已經能夠支持 MPEG-DASH,無需進行特殊的配置或升級。

MPEG-DASH(Dynamic Adaptive Streaming over HTTP)是一種自適應比特率流媒體技術,允許高品質的流媒體通過HTTP進行交付,從不同的比特率和質量的媒體文件中進行選擇。因此,你可以將其視為一種基於HTTP的分片技術,而非一個獨立的傳輸協議

這種自適應技術的核心是將媒體內容分成多個小的段(或稱分片),然後通過HTTP傳輸。客戶端(例如視頻播放器)可以根據網絡條件和設備能力動態選擇不同的質量和比特率的段進行播放。

這使得MPEG-DASH可以在各種網絡條件下提供更好的視頻觀看體驗,適應網絡帶寬的變化,並提供流暢的播放,無論連接速度快慢。它不是一個新的傳輸協議,而是建立在現有的HTTP協議之上的一種媒體交付方法。

RTMP (Real-Time Messaging Protocol)

RTMP(Real-Time Messaging Protocol)和 RTSP(Real Time Streaming Protocol)都是基於 TCP 的應用層協議,它們都使用 TCP 協議進行數據傳輸。雖然它主要使用TCP,但也可以使用UDP。

RTMP是一種用於實時數據傳輸的協議,主要用於音頻、視頻等媒體數據的傳輸。它使用TCP連接來傳輸數據,因為TCP提供了可靠的數據傳輸機制,確保數據的可靠性和缺陷,適合實時數據的傳輸。

RTSP也是一種用於實時媒體數據傳輸的協議,它用於控制媒體流的傳輸和播放。RTSP使用TCP連接來發送控制命令和接收媒體描述信息等控制數據,以確保控制信令的可靠傳輸。而媒體數據本身通常使用RTP(Real-time Transport Protocol)和RTCP(RTP Control Protocol)協議在UDP上進行傳輸,因為UDP具有較低的傳輸延遲,更適合實時媒體數據的傳輸。

因此,RTMP 和 RTSP 都是使用 TCP 進行控制信令傳輸,但它們在傳輸媒體數據的方式上有所不同。RTMP 使用 TCP 進行媒體數據的傳輸,而 RTSP 使用 RTP/RTCP 在 UDP 上進行媒體數據的傳輸傳輸。

那RTSP和RTMP是同樣的數據,如果RTSP設計於UDP傳輸,不是有順序可靠的檢查的動作,而RTMP沒有?

其中,RTSP(Real Time Streaming Protocol)和 RTMP(Real Time Messaging Protocol)在設計上有一些不同,儘管它們都是用於實時媒體傳輸的應用層協議。

RTSP 是一個控制協議,主要用於控制媒體流的傳輸和播放。RTSP 使用 TCP 連接發送控制命令並接收媒體描述信息等控制數據,以確保控制信令的可靠傳輸。而媒體數據本身通常使用RTP(Real-time Transport Protocol)和 RTCP(RTP Control Protocol)協議在 UDP 上進行傳輸。

RTP和RTCP是專門設計用於傳輸實時媒體數據的協議。RTP負責傳輸媒體數據,並提供時序、序列號等信息來保證數據順序和實時性。而RTCP則用於傳輸控制信息,例如網絡RTCP的一項功能就是檢查丟包率並做出相應的調整,以保證媒體數據的傳輸質量。

相比而言,RTMP 是一種用於實時數據傳輸的協議,主要用於音頻、視頻等媒體數據的傳輸。RTMP 使用 TCP 連接來傳輸數據,保證數據的可靠性和缺陷。RTMP 協議本身並並沒有專門設計用於檢查丟包率和調整傳輸速率的機制,這些功能通常需要在應用層實現。

綜上所述,RTSP 和 RTMP 在傳輸實時媒體數據的方式和設計上有所不同。RTSP 主要用於控制媒體流的傳輸和播放,使用 RTP/RTCP 在 UDP 上進行媒體數據傳輸,並帶有丟包而RTMP則主要用於傳輸媒體數據,使用TCP進行數據傳輸,對於丟包率和傳輸速率的控制通常需要應用層實現。

基於 TCP 的串流協議

  1. HTTP Live Streaming (HLS):由 Apple Inc. 提出的基於 HTTP 的串流協議,被廣泛使用在各種串流場景中。它將串流內容分割成一系列小型的基於 HTTP 的文件來傳遞給客戶端。
  2. MPEG-DASH(Dynamic Adaptive Streaming over HTTP):這是一種領先的元率串流技術,使高品質的串流媒體成為可能,通過HTTP傳輸。
  3. RTSP (Real-Time Streaming Protocol):雖然 RTSP 本身是一種控制協議,用於控制串流媒體服務器,但實際上,它的串流通常用 RTP 跨越 UDP 實現。然而,RTSP 也可以跨越 TCP 串流實現傳輸。
  4. RTMP (Real-Time Messaging Protocol):RTMP 是由 Adob​​e Systems 為 Flash 播放器播放音訊、視訊和數據而開發的開放協議,主要使用 TCP。
  5. Microsoft Smooth Streaming (MSS):這是微軟開發的一種前置串流協議,通過HTTP進行傳輸。
  6. HTTP/2:這是 HTTP 協議的第二個主要版本,它允許服務器將多個響應客戶端到客戶端,而無需客戶端明確的請求,這對於串流媒體來說是有利的。
發佈日期:

串流的網路概念

FFmpeg介紹

FFmpeg 是一個應用程式工具,它的主要功能包括讀取、解碼、編碼、轉碼、重新封裝、串流等各種視頻和音頻格式。這種應用程式大多數情況下被認為是在應用層(Application Layer)

然而,如果從數據表示、編碼和轉換的角度來看,你也可以說 FFmpeg 做的工作涉及到表示層(Presentation Layer)的部分功能。例如,它會解碼影片檔案(從一種表現形式轉換為另一種),並將其轉換為對應的像素和音頻資料。

若是使用ffmpeg讀取HTTP-FLV的串流,HTTP-FLV 協議主要是在應用層工作,而接收端的應用程序(例如媒體播放器)則在應用層和表示層之間工作,負責解封裝和解碼接收到的數據

HTTP 和 WebSocket 協議

HTTP 協議的握手過程通常包括客戶端發送一個請求到伺服器,然後伺服器回應這個請求。這種請求/回應模式構成了 HTTP 的基本交互模式。

而 WebSocket 協議的握手過程稍微有些不同。WebSocket 的握手過程基於 HTTP,一開始由客戶端發送一個 HTTP 升級請求到伺服器。如果伺服器接受這個升級請求,它會回應一個升級的回應,此時連接就會從 HTTP 轉變為 WebSocket。然後這個 WebSocket 連接就可以用來做全雙工的通訊,直到一方選擇關閉連接為止。

這些握手過程都是在應用層進行的,並且直接涉及到最終的應用程序(例如網頁瀏覽器或者 Web 伺服器)的行為。

WebRTC(Web Real-Time Communications)的網路概念

WebRTC(Web Real-Time Communications)是一種用於網頁瀏覽器的 P2P(Peer-to-Peer,即點對點)通訊技術。它可以讓網頁瀏覽器直接與另一個網頁瀏覽器進行實時的音視頻通訊,不需要中間的伺服器轉發。

WebRTC 在 OSI 模型中的定位並不容易確定,因為它實際上涉及到了多個 OSI 層次。例如,WebRTC 使用了 RTP(Real-time Transport Protocol,實時傳輸協議)來傳輸音視頻數據,RTP 通常被認為是在傳輸層(第四層)。同時,WebRTC 還需要用到 STUN/TURN/ICE 這些協議來進行 NAT 穿透和對等節點的發現,這些協議也工作在傳輸層。而且,WebRTC 最終的實際應用(例如在網頁瀏覽器中進行音視頻通話)則是在應用層(第七層)

所以,我們不能簡單地說 WebRTC 屬於 OSI 模型的某一個層次。相反,我們可以說 WebRTC 是一種跨層次的技術,它涉及到了 OSI 模型中的多個層次。這也再次顯示了 OSI 模型在實際應用中的限制,並非所有的網路技術都能夠簡單地映射到 OSI 的七個層次中。

WebRTC 是一個開放標準,允許通過網頁進行實時通信(RTC)。它使用一系列的協議和技術來實現這一點。下面是一些關鍵部分:

  1. RTP(實時傳輸協議):用於媒體數據(例如音頻和視頻)的傳輸,通常基於UDP。
  2. STUN/TURN/ICE:這些協議和技術用於 NAT 穿透和對等節點發現。STUN 和 TURN 伺服器協助 WebRTC 節點找到彼此並建立直接連接。TURN 伺服器可以在需要時中轉數據,可能使用 TCP 或 UDP。
  3. 信令:WebRTC 本身不規定信令協議。信令用於在通信的兩個端點之間交換元信息,例如呼叫設置、能力協商等。這可以通過各種方式實現,例如使用 WebSocket、HTTP 或其他協議,通常基於 TCP。

所以,WebRTC 使用了多個協議,其中一些是基於 UDP 的(如 RTP 和某些 TURN 場景),而其他一些可能是基於 TCP 的(如信令或當 TURN 使用 TCP 時)。

上圖展示了整個WebRTC所運用的協定架構,左邊(TCP)為Signal應用,右邊(UDP)為串流應用, 協定堆的搭配使用,補足彼此的不足,而本章主要專注在串流應用(右邊)上的協定上,為WebRTC提供了哪些功能。

SRT(Secure Reliable Transport)協定

SRT(Secure Reliable Transport)是一種基於UDP的開源傳輸協定,由Haivision公司發起並由SRT聯盟持續開發。它的主要目的是優化在公共網路(如互聯網)上進行高品質視訊串流的性能。

SRT旨在解決在廣播等高品質視訊串流場景下,對於低延遲、丟包率低的傳輸要求。它在UDP之上實現了數據包重傳機制,並且加入了AES加密,以確保傳輸的安全性。此外,SRT還提供了一個預測網路傳輸性能的機制(稱為「SRT預測模型」),該模型可動態調整傳輸參數,以優化傳輸性能並減少延遲。

因此,SRT協定將UDP的低延遲特性與TCP的可靠傳輸特性相結合,旨在在公共網路上提供一種安全、可靠、低延遲的視訊傳輸解決方案。這使得它在如廣播、遠程生產和OTT串流等領域中得到了廣泛應用。

SRT 加入了一些特性來強化它的穩定性和效能,這使得它能夠對傳輸過程進行更細膩的控制,同時也提供了比 TCP 更低的延遲。

這些特性包括:

  1. 數據包重傳:如果檢測到數據包丟失,SRT 會嘗試重新傳輸這些丟失的數據包,這樣就可以保證數據的完整性。
  2. 端到端的安全性:SRT 支持數據加密,確保數據在傳輸過程中的安全性。
  3. 低延遲:相比 TCP,UDP 的傳輸延遲更低,這使得 SRT 更適合實時或近實時的視訊串流

SRT通常不直接在網頁上播放的原因也是因為他是使用UDP的傳輸協定:

  1. 協議支援:瀏覽器通常支援的協議,如HTTP和WebSocket,是基於TCP的。這些協議被廣泛用於Web應用程序中,因為它們提供了可靠的連接和內建的流控制。由於SRT是基於UDP的,它不是瀏覽器原生支援的協議之一。
  2. UDP的限制:UDP不保證資料包的到達順序或可靠性。SRT在此基礎上增加了一些特性來改善這些問題,但這並不意味著它可以直接在所有客戶端上使用。瀏覽器可能因安全和可靠性的考量而限制或不支援UDP流量。
  3. 轉碼和轉封裝:為了在網頁上播放SRT流,可能需要額外的伺服器組件來轉碼或轉封裝流為瀏覽器支援的格式,例如HLS或MPEG-DASH。這可能增加了複雜性和延遲。
  4. 安全性考量:網頁的安全模型可能限制了直接使用UDP的能力。WebRTC是一個允許網頁使用UDP的技術,但即使如此,它也需要符合特定的安全和隱私要求。