LoginSignup
12
7

More than 3 years have passed since last update.

WebRTCのブラウザ対応状況の調べ方

Last updated at Posted at 2020-05-31

こんにちは、最近業務でWebRTCを勉強し始めたものです。

WebRTC使うぞ!となった時にまず気になるのが自分たちが対応したいブラウザでサポートされているのかという話なのですが、WebRTCはそれが単独のAPIで構成されているわけではなく、またコーデックなども関わってくるので、自信を持って大丈夫と言えるようにまとめてみました。

WebRTCのAPI

まず WebRTC と一口に言っても window.webrtc みたいなオブジェクトが生えているわけではなく、ブラウザを介したユーザ間のリアルタイムコミュニケーションを実現するためのAPIの総称が WebRTC です。

それを実現するためには大きく二つあって

  • 通信に使用するメディア(カメラやマイク)へのアクセス
    • navigator.mediaDevices.getUserMedia() を使って MediaStreams を取得します。
  • P2Pでのコネクションの確立

(その他には Audio/Video 以外を通信したい場合は RTCDataChannel が必要だったり、レコーディングや画面共有などの機能を作りたい場合はnavigator.mediaDevices.getDisplayMedia()が必要です)

なので navigator.mediaDevices.getUserMedia() と RTCPeerConnection が実装されているブラウザであればとりあえず実現はできそうです。

navigator.mediaDevices.getUserMedia() の対応状況

主要なところで言うと iOS 10 以下とIEを切ることができれば大丈夫そうですね。

スクリーンショット 2020-05-31 11.56.41.png

RTCPeerConnection の対応状況

こちらも同様です。

スクリーンショット 2020-05-31 11.58.14.png

コーデックについて

普段Webだけやっている身としては馴染みのない概念ですが、使用するコーデックもブラウザによって対応状況が違うため気をつける必要があります。

MDNに詳しく纏まっているのでこちらをご一読いただけるといいと思いますが、ここでもざっくり解説をします。
https://developer.mozilla.org/en-US/docs/Web/Media/Formats/WebRTC_codecs

コーデックとは

記事の本筋から逸れるので詳細は省きますが、ざっくり言うと動画データと音声データを通信する際の圧縮/復元を行うプログラム(アルゴリズム?)をコーデックと呼びます。

我々Webエンジニアも gzip したり brotli したりすると思いますが、アレの動画/音声版ですね。
それで「brotli、IEだと解凍できないから使えません😇」みたいなのがコーデックにもある訳です。

WebRTC で対応しているコーデック

まずブラウザ関係なくWebRTCのRFCを見てみると次のコーデックのサポートが必須となっています。

各ブラウザベンダーの良心を信じればこれらのコーデックを使用していればとりあえずは動きそうです。

と思いたかったのですが、どうやら Safari ではVP8は iOS 12.1 からの対応みたいです。
WebRTC コーデックの現状に関する考察 - ボクココ
Safari 12.1 で VP8 と Unified Plan が入る - V - Medium

まだまだ記事執筆時点では iOS 12.0 以下のシェアも馬鹿にならないのでコーデックを決める際には注意が必要です。またVP9などのコーデックを使用したい場合には個別に調査を頑張りましょう。

こちらの記事が現状整理分かりやすくされていて良かったです。
WebRTC の未来 · GitHub

参考

Getting started with WebRTC <- これ読むとWebRTCがどう動いているかの流れが大体掴めます。
Codecs used by WebRTC - Web media technologies | MDN
Can I use... Support tables for HTML5, CSS3, etc
WebRTC の未来 · GitHub

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7