初探 WebRTC - 手把手建立線上視訊 (1)

集點送紅利 / Hiro
4 min readFeb 21, 2020

--

前言

本系列主要介紹使用 WebRTC 搭配 Socket.io 建立一對一的視訊。

連結:
1. 初探 WebRTC — 手把手建立線上視訊 (1)
2. 初探 WebRTC — 手把手建立線上視訊 (2)
3. 初探 WebRTC — 手把手建立線上視訊 (3)

目錄

  • 什麼是 WebRTC
  • 取得本地影像聲音
  • 輸出畫面

什麼是 WebRTC

Web Real-Time Communication 網頁即時通訊 的簡稱,在 2011 年被 Google 收購並開源,是個可以直接使用瀏覽器建立視訊的 API。

從 2011 到現在也過了 9 年有,來看看目前瀏覽器支援:
( 可以看到九成以上有支援 )

取得本地影像聲音

在跟妹子視訊前,我們先來看看取得本地影像聲音的 API:

剛開始就看到這一串先別慌張,怎麼不是我親近的 document 啊(?
先來看看 navigator,直翻可以叫做領航員,在 window 底下可以找到,列幾個方法看看:

  • navigator.online
    可以偵測瀏覽器是否在線上。
  • navigator.userAgent
    可以取得瀏覽器的完整版本資訊。
  • navigator.platform
    可以取得瀏覽器所在的系統平台 ( 作業系統 )。

看下來大概可以知道是用來取得「 使用者瀏覽器的各種資訊 」
當上面的那串 code 執行後,瀏覽器會跳出詢問是否使用影像音訊:

輸出畫面

按下允許,我們還要做一件事才能把影像聲音顯示出來。先在 HTML 新增 video 標籤,順帶一提 playsinline 是為了讓某些瀏覽器的預設全螢幕改成內聯播放。

<-- HTML --><video autoplay playsinline width="200px" height="200px" id="myVideo">
</video>

接著延續一開始的 code,把 stream 灌入到我們的 video 容器裡就會顯示影像了。

如果發現影像是顛倒,自己的臉怎麼長得這麼醜的話 ( #
可以使用 CSS 反轉哦:

/* css */#myVideo {
transform: scaleX(-1);
}

最後再補充一下,一開始的 constraints 裡,可以做更進階的配置:

除了大小,還能設置手機前後鏡頭,以及傳輸速率等等,詳細請見 MDN

後記

看完第一篇,我們學到了:

  • 怎麼取得本地影像聲音,並輸出到畫面上。

關於 stream 的話,指的是串流媒體,可以讓多媒體檔案的壓縮封包像流水一樣傳送,也就是我們平常看 youtube 的時候會邊看邊讀取。如果沒有使用串流的話,就只能把檔案整包下載下來看。

參考資料

--

--