Skip to content

Instantly share code, notes, and snippets.

@voluntas
Last active May 6, 2022 06:29
Show Gist options
  • Save voluntas/4890458f4f9191660ab659d37ff67a83 to your computer and use it in GitHub Desktop.
Save voluntas/4890458f4f9191660ab659d37ff67a83 to your computer and use it in GitHub Desktop.
WebRTC の今

WebRTC の今

日時:2019-03-13
作:@voluntas
バージョン:19.03.0
url:https://voluntas.github.io/

この資料は今後も更新されていく。この記事が良いと思ったらこの記事に Star を是非

この記事は 2019 年 3 月現在で Safari 12.1 がリリースされる前提で書かれている

Safari 12.1 で映像コーデック VP8 に対応することで、 WebRTC は主要ブラウザで問題なく利用することができるようになる。

これは WebRTC の今 を正確に伝える資料である。

多くの顧客に導入実績がある WebRTC SFU を 1 から開発、販売している会社の製品責任者。最近では QUIC の実装も行っている。

WebRTC は誰もが利用できる技術と認識してもらって問題ない。互換性や安定性、接続性にも問題はない。むしろ安定性と接続性はとても高く WebRTC の特徴といっても問題ない。

是非、積極的に使っていってほしい。

問題ない

ブラウザでは Chrome 、Firefox 、Safari の最新版で相互にやり取りするのに問題は出ない。

繰り返すが ブラウザ間の互換性に問題はない

複雑な動きをさせると課題は出てくるが、その場合は WebRTC SFU を利用してブラウザ間の差を吸収すべきである。

問題ない

WebRTC は不安定で落ちると言われるが、実際は数年前からとても安定している。実際 1 ヶ月以上継続的に送受信のテストを行ったが、問題なかった。

一番懸念していた Safari が 12.0 までは不安定だったが、 12.1 で改善されたのがとても大きい。

問題ない

WebRTC は繋がらないと言われるが、これはよくわかっていない人が適当に言っているだけなので注意してほしい。

そもそも WebRTC は 繋がるためのプロトコル を Google がコストをかけて実現していることが強みでもある。

ネットワーク的には TURN サーバを利用することで TCP や TLS しか繋がらないネットワークでも抜けられるようになっている。つまりできる限りいろいろな方法で接続を実現しようとするプロトコルであり、かなり接続性は高い。

とても柔軟

WebRTC は Chrome や Firefox が回線性能をできるだけ発揮しようとするため、ネットワーク帯域を利用してしまう仕組みと勘違いされてしまっているが、実はその部分を WebRTC SFU を利用したりすることで、とても不安定な回線でも安定して配信することができる。

また逆に 4K@30 という超高解像度の映像を 15Mbps という高いビットレートで配信することもできる。つまり安定した回線から不安定な回線まで問題なく対応できる。 WebRTC は不安定な回線にとても強いプロトコルである。

とても多い

WebRTC の機能は実はとても多い。音声や映像のコーデックはとても多に対応している。更に再送や服装の制御、エラー訂正などにも対応している。

Simulcast という配信者が複数の画質を配信する技術にも対応しており、既存の配信技術よりもとても高い機能を持っている。この辺がブラウザの WebRTC API に一切出てこないため、シンプルな機能と思われがちだが、かなり多機能である。

またブラウザの WebRTC には音量調整機能やノイズリダクション、エコーキャンセラーの音声処理も含まれている。

目に見えないがとても高機能。

とても難しい

WebRTC のプロトコルや仕組みはとても複雑で難しい。そもそも超低遅延で音声や映像を双方向でやり取りする技術というのはかなり難易度が高い技術である。ただそれをブラウザやスマートフォン、さらにはネイティブで簡単に利用できるようにするのが WebRTC と考えてもらって構わない。

P2P で 1 対 1 でやり取りするアプリを作るだけであれば WebRTC の難しさに触れる必要はない。また WebRTC SFU を使えば WebRTC をほとんど意識することなく WebRTC を利用することが可能になる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment