× 關閉
關於南訊
Home   /   關於南訊   /   技術科普   /   WebRTC 如何實現網路通訊
2025/09/03

WebRTC 如何實現網路通訊

WebRTC 的起源

 

Google 2010 年收購了一家名為 Global IP Solutions (GIPS) 的公司。這家公司的技術核心是即時語音和視訊通訊,包括了先進的語音編碼器(如 Opus)、回音消除、降噪等功能。

收購 GIPS 後,Google 將這些專有技術開源,並將其與自己正在開發的瀏覽器技術整合。在 2011 年,Google 正式將這套技術命名為 WebRTC,並向 IETF(網際網路工程任務組)提交標準化草案。

 

開源與標準化

 

Google 提出 WebRTC 的初衷,是為了讓網頁瀏覽器能夠直接進行即時語訊和視訊通訊,而不需要安裝任何外掛(如過去的 Flash Java applet)。

為了實現這個目標,Google 積極與多個組織合作,包括:

  • IETF (Internet Engineering Task Force):負責制定網路通訊協議的標準。
  • W3C (World Wide Web Consortium):負責制定網頁相關技術的標準。

在這些組織的共同努力下,WebRTC 逐漸成為一個開放的、標準化的技術,並獲得了主流瀏覽器(如 ChromeFirefoxSafariEdge)的支援,最終成為了網路即時通訊的基礎技術之一。

 

WebRTC 的技術

 

WebRTCWeb Real-Time Communication)是如何實現網路電話語音串流的?簡單來說,它就像一個內建在瀏覽器裡的通訊工具箱,能讓電腦或手機之間直接進行語音、視訊和資料傳輸,而不需要經過複雜的伺服器中轉。

 

以下是 WebRTC 實現語音串流的幾個核心步驟和技術:

 

1. 取得與處理本地媒體(Get Media

 

首先,WebRTC 需要取得你設備上的音訊。這一步驟透過瀏覽器提供的 API 實現,你可能會看到一個彈跳視窗詢問你是否允許網站存取你的麥克風。

  • getUserMedia() API:這是 WebRTC 的起點。它會向作業系統請求存取你的麥克風,一旦你允許,你的聲音訊號就會被捕捉下來。
  • 音訊處理:原始的音訊訊號非常龐大,WebRTC 會對其進行數位化、編碼和壓縮。這個過程會使用語音編碼器(Audio Codec),例如 Opus,它是一種高效能、低延遲的編碼器,非常適合即時通訊。

2. 建立連線(Peer-to-Peer Connection

 

WebRTC 的核心優勢在於它能建立點對點(P2P)連線,讓兩台設備可以直接通話,而非將資料先上傳到伺服器再傳給對方。這樣可以大幅降低延遲。

  • SDPSession Description Protocol:為了讓兩台設備知道如何互相通話,它們需要交換彼此的通話設定。SDP 就是用來描述這些設定的,例如:
    • 支援的語音編碼器:雙方都支援 Opus 編碼嗎?
    • IP 位址與埠號:我的「網路地址」是什麼?
  • ICEInteractive Connectivity Establishment:由於網路環境複雜,設備可能在防火牆、路由器或 NAT 之後,直接連線會很困難。ICE 就是解決這個問題的技術框架。它會嘗試多種連線方式:
    • STUN 伺服器:幫助設備找出自己對外的公網 IP
    • TURN 伺服器:如果 P2P 連線真的無法建立(例如網路限制非常嚴格),TURN 伺服器會充當中繼者,將所有的資料流量中轉,確保通話可以進行,但這會犧牲一些延遲優勢。

3. 即時串流(Real-Time Streaming

 

一旦 P2P 連線建立,語音數據就會開始即時傳輸。WebRTC 使用了兩種核心協議來實現這一步:

  • RTPReal-time Transport Protocol:這個協議負責將壓縮後的語音資料打包成一個個的資料封包,並加上時間戳和序號,以確保接收端能正確地將封包重新組裝成連貫的聲音。
  • UDPUser Datagram Protocol:與 TCP 不同,UDP 是一種「不可靠」的傳輸協議。這聽起來很糟,但對即時通訊來說是優點。UDP 不保證每個封包都會送達,也不會花時間重新發送遺失的封包。這使得它非常快速,能最大限度地降低延遲,即使偶爾丟失一個語音封包,對整體語音品質的影響也相對較小。

4. 播放語音(Render Audio

 

接收端收到 RTP 封包後,WebRTC 會進行以下處理:

  • 緩衝區與抖動處理(Jitter Buffer:網路環境不穩定會導致封包抵達的時間不一(稱為「抖動」)。接收端會將封包暫存在一個緩衝區裡,重新排列它們的順序,並以穩定的速度將它們送給解碼器。
  • 解碼與播放:封包內的壓縮語音數據被解碼器還原,最終轉換為類比訊號,透過你的耳機或喇叭播放出來。
  •  

總結一下,WebRTC 實現網路電話語音串流的流程如下:

 

  1. 捕捉你的麥克風聲音,並用高效的編碼器 Opus 進行壓縮。
  2. 透過 SDP 與對方交換通話設定,並利用 ICESTUN/TURN)技術找到最佳的連線路徑,建立 P2P 連線。
  3. 利用 RTP UDP 將語音數據快速且低延遲地傳輸給對方。
  4. 在接收端用 緩衝區 處理延遲問題,並將語音解碼後播放出來。

這個複雜的過程都是在你的瀏覽器內部自動完成的,這就是為何能輕鬆地在許多網頁上進行語音通話,而不需要安裝任何額外的軟體或外掛。