# [知識篇]WebRTC - JavaScript APIs
# 學習目標
主要了解 WebRTC 包含了哪些 JavaScript APIs,才能用來為網頁提供更多的多媒體應用,如:音視訊會議,檔案傳輸等。
# APIs
這邊會列舉幾個重點核心的API:
# 多媒體擷取
- getUserMedia: 負責擷取使用者的音頻與視頻。
這個API算是在WebRTC 中能實現影音串流的重點,透過navigator.mediaDevices.getUserMedia()
,能夠詢問使用者是否同意瀏覽器存取其系統所連接的攝影鏡頭及麥克風,以此來獲取多媒體數據。
HTML5時期誕生的getUserMedia
API歷經時代的變動,在過去因每個瀏覽器都有各自的prefix且API使用方式也跟現在不同(如下)。
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
後來才統一歸類到mediaDevices
中(如下)。
var getUserMedia = navigator.mediaDevices.getUserMedia
mediaDevices
主要提供能夠讓瀏覽器存取使用者系統所連接的媒體設備,如相機,麥克風,螢幕共享等,
HTML5後出現的這類型API(如WebGL,GPS,Web Audio等)都必須通過使用者的同意才能夠取用,為了安全性因此有蠻多限制,但另一方面也為網頁帶來更多更廣的應用!!!
- MediaRecorder: 錄製多媒體數據
透過該API能夠存取 MediaStream
中的多媒體數據,換句話說,也就能搭配getUserMedia
來進行錄製影音檔的實作,而且是在網頁應用上,不需要透過任何的套件工具!
並且還能對其數據進行加工處理後再傳送或是下載~
# P2P連線
- RTCPeerConnection: 這API代表一个由本機到遠端的WebRTC連接。
其提供了建立,維持連線,監控狀態,關閉連接等方法。 WebRTC 建立溝通最核心的功能。想了解 peer-to-peer 的原理及運作方式,必定要好好看看這個 API 提供的功能。 了解其是如何連接,如何監控狀態,如何控制連線狀態也是學好 WebRTC 的基礎~
# 檔案傳輸
- RTCDataChannel: 該API能夠在雙方使用者之間建立一個雙向的數據通道連接。
可以通過這雙向的數據通道傳送和接收任意數據,其作用有點類似WebSocket API
,
但唯一不同的是該API傳送數據是不需要經過Server !! (有點像私密聊天
# 總結
了解到 WebRTC 中最為重要的幾個API:
- getUserMedia: 存取多媒體數據
- MediaRecorder: 錄製多媒體數據
- RTCPeerConnection: 建立點對點串流
- RTCDataChannel: 建立雙向數據通道
接下來會針對個API來介紹與實作~