WebRTCのstatsについて入門した
WebRTCとは
HTML5から策定されたAPI規格で、リアルタイムにビデオ/オーディオ/データ(デバイスの画面キャプチャなど)をやり取りを行います。
プラグイン無しでボイスチャットやビデオチャットをブラウザ上で実現可能になります。
通信方法は、P2P、MCUやSFUがあります。
P2P通信はコンピューター間で直接通信を行う際のアーキテクチャであるのですが、
P2P通信では複数人つなぐと端末の通信量と負荷がかかってしまうためサーバーを経由する方法として、SFU(クライアントからのメディアデータを加工せずにそのままサーバー代理で他のクライアントに送る)などがあります。
公式のGetting Started
WebRTCを使った通信方法について理解するのにおすすめstatsについて
WebRTCのstatsにはICE Candidate
の情報が含まれます。
ICEとは相手ブラウザに到達する可能性のある通信経路に関する情報になります。
その経路候補をICE Candidate
としてブラウザ間で共有しないと通信はできない仕組みになっています。
仕様はこちら。
statsを確認してみる
Chromeの場合、 chrome://webrtc-internals/ にアクセスするとstats情報が取得できる
GoogleMeetなどビデオ通話してみるとstats情報が出てくるのが確認できると思います。stats情報はタブごとに確認することが可能になっています
RTCIceCandidatePair_XXX
RTCIceCandidatePairで、これは2つのWebRTCエンドポイント間の実行可能な接続を構成するICE候補のペアということです。
太字になっているRTCIceCandidatePairは現在使われている有効なTransport/輸送路となります。
詳細は WebRTCデバッグ入門 - Qiitaにある図 が参考になります!
stats情報はRTCIceCandidatePairStatsとなります。
太字以外は通信で使われていないためbytesSent
が0になっていたりavailableOutgoingBitrate
がなかったりしています。
詳細な見方はSkyWayトラブルシューティング入門 - Qiitaが参考になります!
statsを取得する
stats情報が取得できるAPIが用意されています。
WebRTCのサンプルアプリがたくさんあるので、実装の参考になります。
statsに関するサンプルアプリもあります。 また、WebRTCで実装した内容が動かない時の原因の切り分けにサンプルアプリを動かしたりしています。
Discussion