WebRTC音視頻數據採集 六、第二節 WebRTC_API_適配

getUserMedia適配

在WebRTC 1.0規範出來之前,各個瀏覽器廠商都在按照自己的計劃在使用WebRTC,推動自己的API,這樣就使得各個瀏覽器廠商它使用的getUserMedia的名字是不一樣的,它都增加了一個自己的前綴,我們來看一個例子。

getUserMedia的不同實現

在www規範裏面我們採集音視頻的API就是getUserMedia,

谷歌chrome起了個名字就在前面加了一個webkitGetUserMedia,

fireFox也在前面加了一個mozGetUserMedia,

這樣就給前端的開發人員造成很大的麻煩,那我要想採集音視頻數據,通過這個 API,對於不同的瀏覽器廠商要做不同的判斷。

適配置不同瀏覽器的方法

自己實現

var getUserMedia =  navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

這樣做雖然可以,但是非常的麻煩。

使用Google開源庫adapter.js

隨着WebRTC在各個瀏覽器廠商中推進,google開源了一個庫adapter.js, adapter.js的主要作用是適配各個不同瀏覽器的API,就是給它定義一個統一的接口,會根據不同的瀏覽器來調用它底層對應的API,但是隨着這個WebRTC的發展,這個adapter.js也是越來越複雜,現在差不多有兩千多行的代碼,維護量其實也是非常大的。

但是隨着各個瀏覽器廠商都按照WebRTC 1.0規範越來越 嚴格,後面有可能這個adapter.js就不用了,但是就目前而言adapter.js還是起到非常大的效果的。所以在我們寫這個直播相關的應用程序的時候,我們最好還是使用一下這個adapter.js,讓它做一下適配。

這樣就省去了我們很多的麻煩。

adapter的地址就是 https://webrtc.github.io/adapter/adapter-latest.js,最新版本就是adapter-latest.js,如果是我們自己開發的時候,最好是能夠帶上版本號,而不是用這個最新版本,最爲最新版本會 隨着這個WebRTC的發展,隨着這個規範的新的制定,那 它會做一些改變,這樣有可能對老的瀏覽器產生一些問題,所以我們最好在真正使用的時候,使用它具體的某個版本號,而不是使用這個最新的。

下面我們就來實戰一下,將 這個 adapter.js加入到項目中去。這樣代碼就更完善一些。

<html>
  <head>
    <title>捕獲音視頻數據 WebRTC capture video and audio</title>
  </head>
  <body>
    <!-- 
      我們創建一個video標籤,這個標籤就可以顯示我們捕獲的音視頻數據 
      autoplay 表示當我們拿到視頻源的時候直接播放
      playsinlin  表示在瀏覽器頁面中播放而不是調用第三方工具
     -->
    <video autoplay playsinlin id="player"></video>
    <!-- 引入 adapter.js庫 來做 不同瀏覽器的兼容 -->
    <script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
    <script src="./js/client.js"></script>
  </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章