iT邦幫忙

2021 iThome 鐵人賽

DAY 29
1
Software Development

新手也能打造網路電話系統-WebRTC入門與活用系列 第 29

Day 29 - 進階篇 - 多對多通話

閱讀與實作前面的文章後,大家對於如何建立WebRTC應該都有一定程度的認識了,而本篇要介紹WebRTC實際應用於多對多通話時的常見架構。

Mesh

Mesh是一種所有終端裝置互相建立連線通道的架構。在這個架構下,每個終端裝置之間會以網狀的結構互相連接,也就是前面文章我們所學到的對等連線。

A、B與C三方在Mesh架構下進行多方通話,若A要分享音訊與視訊,它需要分別傳遞媒體數據給B與C,若B要分享音訊與視訊,則需要分別傳遞媒體數據給A與C,以此類推。

以Mesh架構進行多方通話,需要建立N-1條連線通道(N為人數),例如通話人數為3人,每人需要建立2條連線通道,若通話人數為30,每人需要建立29條連線通道,換言之,若要將自己的影像或聲音傳遞給所有人,就必須分別上傳29次,這是大部分使用者無法負荷的流量,因此這種架構僅適合一對一通話,難以進行大型的視訊會議或遠距教學。

每個終端裝置所需通道數量: N-1 條。

優點:

  • 架構實作容易。
  • 不需要建立用於處理多媒體的伺服器,因此成本低廉。

缺點:

  • 通話人數越多,所需要的頻寬也越多,因此不適合進行多人通話。

MCU(MultiPoint Control Unit)

MCU是一種混合終端裝置媒體流的架構,由一個伺服器與多個終端裝置組成。在這個架構下,每個終端裝置需要將各自的媒體流傳遞至伺服器,而伺服器會將媒體流混合成單一個媒體流,並傳遞給所有終端裝置。

A、B與C三方在MCU架構下進行多方通話,A、B與C將各自的媒體流傳遞至伺服器,而伺服器會進行媒體流的解碼、混合及編碼,再依據對象傳遞編碼完成的媒體流,例如傳遞B與C的混合流給A、傳遞A與B的混合流給C,以此類推。

以MCU架構進行多方通話,僅需要建立1條連線通道,每個端點會將媒體流傳遞給伺服器,讓伺服器解碼後進行混合,再將混合後的媒體流重新編碼,並傳遞給每個端點。由於需要重新處理媒體流,所以設計上較為複雜,且伺服器需要強大的運算效能,因此成本較高。

每個終端裝置所需通道數量: 1 條。

優點:

  • 每個終端裝置僅有1條通道,因此適合進行多人通話。
  • 每個終端裝置所收到的媒體流皆一致。

缺點:

  • 架構實作不易。
  • 需要對媒體流進行解碼、混合、編碼,因此會造成通話延遲。
  • 需要建立用於處理多媒體的伺服器,且伺服器需要擁有強大的處理效能,因此成本高昂。

SFU(Selective Forwarding Unit)

SFU是一種選擇性轉發終端裝置媒體流的架構,由一個伺服器與多個終端裝置組成。在這個架構下,每個終端裝置需要將各自的媒體流傳遞至伺服器,而伺服器如同媒體流的路由器,會將媒體流轉發給所有終端裝置。

A、B與C三方在SFU架構下進行多方通話,A、B與C將各自的媒體流傳遞至伺服器,而伺服器會進行媒體流的轉發,若A要分享音訊與視訊,它需要傳遞媒體數據給伺服器,而伺服器會轉發給B與C,以此類推。

以SFU架構進行多方通話,上傳僅需要建立1條連線通道,而下載則需要建立N-1條連線通道,每個端點會將媒體流傳遞給伺服器,讓伺服器中繼給其他對象,相較於Mesh架構而言,SFU架構只需要上傳一次媒體流,但需要建立伺服器,因此成本也相對高,對於MCU架構而言,SFU架構所需的下載頻寬較高,但由於伺服器僅轉傳媒體流,因此伺服器的效能需求不高。

每個終端裝置所需通道數量:上傳 1 條,下載 N-1 條。

優點:

  • 上傳僅有1條通道,下載則為N-1條通道。
  • 架構實作相較於MCU架構容易。

缺點:

  • 需要建立用於處理多媒體的伺服器,因此成本高於Mesh架構,但低於MCU架構。

結論

先前的文章中,我們採用最基本的對等連線進行通話,但通話人數一多,這樣的架構就難以符合現實需求,因此出現了用於實現多方通話的MCU與SFU架構,以建立媒體伺服器為前提,設計一套媒體流的處理程序並推送給客戶端,雖然解決了客戶端難以負擔通話的問題,但也讓媒體伺服器需要昂貴的維護成本,因此架構的選擇還是得依據使用場景來決定,簡而言之,沒有最好的解決辦法,只有最適合的方案。


上一篇
Day 28 - 進階篇 - 測試工具與除錯
下一篇
Day 30 - 完賽感言與回顧
系列文
新手也能打造網路電話系統-WebRTC入門與活用30

1 則留言

0
雷N
iT邦新手 2 級 ‧ 2021-10-13 13:07:50

期待有SFU的實戰分享

Joe iT邦新手 5 級 ‧ 2021-10-13 15:24:06 檢舉

大大竟然挖了這個坑,看來我要找時間填坑了XD

雷N iT邦新手 2 級 ‧ 2021-10-13 18:40:39 檢舉

/images/emoticon/emoticon01.gif

我要留言

立即登入留言