最終更新:2021-01-29 (金) 22:11:41 (1144d)
WebRTC/開発
ドキュメント
サンプル
公式
参考
WebRTC/クラス
- RTCPeerConnection
- RTCSessionDescription
- RTCIceCandidate
- RTCPeerConnectionIceEvent?
- MessageEvent
- MediaStream
- RTCStatsReport
- RTCIdentityEvent?
- RTCIdentityErrorEvent?
- MediaStreamEvent?
- MediaStreamTrack?
- MediaDevices?
統計情報
- chrome://webrtc-internals
API
カメラ
- navigator.getUserMedia (Deprecated)
- navigator.mediaDevices.getUserMedia
- ベンダープレフィックスが取れた
- コールバックではなくPromiseベースになった
画面 (Screen Capture)
- 2017年まで ... 各ブラウザ独自にスクリーンキャプチャーを実装
- 2018年以後 ... 仕様が固まりそれに合わせる動きが進んでいる
メモ
- カメラ/マイクへのアクセスにはhttps:// 必須。Mac OS X の場合は開発者メニューから http://を使えるようにできる
処理の流れ
WebRTC/シグナリング
- 方式
- Vanilla ICE
- Trickle ICE
SDP
- 通信するメディアの種類(音声、映像)、メディアの形式(コーデック)、アプリケーションデータ
- IPアドレス、ポート番号
- 暗号化の鍵
- セッションの属性(名前、識別子、アクティブな時間など)
ICE Candidate
- 通信経路の候補
- P2Pによる直接通信
- NATを通過するためのSTUNサーバーから取得したポートマッピング → 最終的にはP2Pになる
- Firefallを越えるための、TURNによるリレーサーバーを介した中継通信
処理
NAT超え
Firewall超え
WebRTC/トポロジ
- P2P (Peer-to-Peer) ... ブラウザ同士が直接通信、フルメッシュ
- MCU (Multipoint Control Unit) ... サーバー側で映像/音声を合成、再圧縮
- SFU (Selective Forwarding Unit) ... サーバー側で映像/音声を配布
配信
WebRTCハンズオン
- https://qiita.com/yusuke84/items/de9f0f6d221acec6fc07 (INDEX)
- https://qiita.com/massie_g/items/916694413353a3293f73 (概要)
- https://qiita.com/massie_g/items/6141a1020dd8bdf6574e (準備)
- https://qiita.com/yusuke84/items/43a20e3b6c78ae9a8f6c (本編)