iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Software Development

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

Day 07 - 觀念篇 - WebRTC API

WebRTC提供應用層級相關之API,其中包含取得裝置多媒體資料流、建立點對點連線,以及向遠端傳輸任意類型資料等,使開發者可自定義與實作WebRTC。

建立WebRTC所需之API如下圖所示,API使用方式及名稱依據作業系統或瀏覽器平台而有些許不同。

MediaDevices

MediaDevices API可取得輸入與輸出媒體設備之相關資訊或媒體數據,以控管裝置所擁有的媒體設備。經過使用者授予權限後,開發者可對硬體來源進行媒體約束,以控制其媒體數據,例如:取得麥克風音訊或攝影機視訊。

常見方法 說明
enumerateDevices() 取得輸入與輸出媒體設備之相關資訊。
getSupportedConstraints() 取得瀏覽器可支援之媒體設備約束條件。
getDisplayMedia() 經使用者選擇顯示器後,取得該顯示器之媒體數據。
getUserMedia() 經使用者允許後,取得麥克風或攝影機之媒體數據。

MediaStream

由硬體來源所取得之媒體數據稱為媒體流(MediaStream),其內部通常包含一個以上的媒體流軌道(MediaStreamTrack),軌道分為音訊與視訊兩種類型。開發者可對媒體流新增、移除、暫停或停止特定的軌道,以進行媒體數據之控制。

常見方法 說明
addTrack() 添加指定之MediaStreamTrack。
removeTrack() 移除指定之MediaStreamTrack。
getTracks() 取得所有類型之MediaStreamTrack。

RTCPeerConnection

主要負責WebRTC連線流程與相關事務管理,包含本地端與遠端連接、多媒體傳輸與編解碼,以及網路與質量調變,並提供維護、監控及關閉連線方法。

常見方法 說明
setConfiguration() 設定WebRTC使用之ICE伺服器與傳輸策略。
createOffer() 建立Offer類型之SDP,以利後續將本地端裝置與WebRTC所需之相關資訊提供至遠端。
createAnswer() 建立Answer類型之SDP,以利後續將本地端裝置與WebRTC所需之相關資訊提供至已建立Offer之遠端。
createDataChannel() 建立本地端與遠端之通道,以傳輸任何類型之資料。
setLocalDescription() 設定本地端之SDP資訊。
setRemoteDescription() 設定遠端之SDP資訊。
getStats() 提供有關整體或特定MediaStreamTrack之統計資料。
addIceCandidate() 添加從遠端獲得之ICE候選人。
close() 關閉WebRTC之連接。

RTCDataChannel

當端點之間已建立連線後,可藉由RTCDataChannel API向對方傳遞任意類型之資料。使用前必須建立資料通道與定義事件,使用完畢後須關閉資料通道以釋放資源。

常見方法與事件 說明
send() 傳送資料給另一端點。
close() 等待所有資料傳送完畢後關閉資料傳輸通道。
onopen 當通道建立時觸發此事件。
onmessage 當收到另一端點傳送之資料時觸發此事件。
onclose 當通道關閉時觸發此事件。

RTCSessionDescription

RTCSessionDescription API為SDP資訊的類別,主要用於初始化SDP資訊,使參與WebRTC的雙方可將交換後的SDP訊息實體化。

RTCIceCandidate

RTCIceCandidate API為ICE候選人資訊的類別,主要用於初始化ICE候選人資訊,使參與WebRTC的雙方可將交換後的ICE候選人訊息實體化。


上一篇
Day 06 - 觀念篇 - Session Traversal Utilities for NAT、Traversal Using Relays around NAT
下一篇
Day 08 - 應用篇 - 使用者音視訊控制(1)
系列文
新手也能打造網路電話系統-WebRTC入門與活用30

尚未有邦友留言

立即登入留言