Chrome/Firefox/EdgeのWebRTCアップデート情報のまとめ.
API実装状況
各ブラウザにおける実装状況は次を参照.(@gtk2さん作)
Chrome
◯:デフォルト △:オプション/flag
(A):Android,(i):iOS
M47-M51
| 項目 | M47 | M48 | M49 | M50 | M51 | 備考 |
|---|---|---|---|---|---|---|
| gUM HTTPS化 | ◯ | |||||
| Proxy handling | △ | LANアドレスの情報隠蔽 | ||||
| MediaDevices.enumerateDevices() | ◯ | |||||
| MediaStream recording API | △ | ◯ | ||||
| RTC Event log | △ | ◯ | WebRTCの診断用ログ | |||
| Audio output device selection | ◯ | |||||
| ECDSA | △ | ◯ | ||||
| VP9 | ◯ | |||||
| H.264 | △ | フラグで設定切り替え | ||||
| 音声付きスクリーン共有 | △ | |||||
| PeerConnection offer/Answerのエラーハンドラ強制化 | ○ | エラーハンドラの設定が必須 | ||||
| 受信側で複数種類のコーデックをサポート | ○ | |||||
| 帯域推定の改善 | ○ | メッシュ接続での帯域推定を改善 | ||||
| Opus v1.1.2 | ○ | |||||
| Audio Screen Share | ◯ | |||||
| Canvas CaptureStream | ◯ | |||||
| FirefoxとのH.264相互接続性の向上 | ◯ |
M52-M56
| 項目 | M52 | M53 | M54 | M55 | M56 | 備考 |
|---|---|---|---|---|---|---|
| H.264(デスクトップ) | ○ | |||||
| RTCCertificateのIndexedDBによる永続化 | ○ | |||||
| コマンドラインスイッチによるAECチューニングのテスト | ○ | |||||
| Opus可変フレームサイズ対応 | ○ | |||||
| Camera2 API support on Android | ○ | |||||
| getUserMedia() Promise | ○ | |||||
| 複数のPeerConnectionのログを同時に記録 | ○ | |||||
| Opus 1.1.3 | ○ | |||||
| New screen share picker UI | ○ | |||||
| UDPポートの範囲設定 | ○ | 組織の管理者がUDPポートの範囲を制限できる | ||||
| iOSのビデオパフォーマンスの改善 | ○ | |||||
| ICE restart時に新しいufragでSTUN bindig request | ○ | |||||
| (A,i)AppRTCMobileへリネーム | ○ | |||||
| (A)スクリーンキャプチャ | △ | |||||
| (i)ビデオの縦横切替 | ○ | |||||
| (A)Camera2での自動フォーカス,videoの安定化 | ○ | |||||
| 送信側での帯域推定 | ○ | RTCP拡張 | ||||
| ビデオの定期的な統計情報の取得 | ○ | |||||
| End-to-Endの遅延を統計情報に記録 | ○ | |||||
| 利用者が存在しない場合のスクリーンキャプチャ一時停止 | ○ | |||||
| H.264 profile-level-idのチェック | ○ | |||||
| Vendor prefix削除(RTCPeerConnection) | ○ | 旧名webkitRTCPeerConnection | ||||
| RTCPeerConnection.getStats Promise | ○ | |||||
| RED/RTXバグ回避策の削除 | ○ | デフォルトSDPを利用する場合,影響なし. | ||||
| RTCPeerConnection.getStats Promise | ○ | |||||
| H.264 Hardware encode(>Windows 8.1) | ○ | |||||
| MediaStreamTrack.getSources削除 | ○ | |||||
| (A)非推奨のカメラ一覧取得メソッドの削除 | ○ | *C-1 | ||||
| 残響エコーキャンセラ | ○ | |||||
| H.264 level-idc negotiation | ○ | level-asymmetry-allowedのパラメータに応じてlevelを変える | ||||
| (A)H.264 Hardware encode/decode | ○ | |||||
| (A)onCameraDisconnected | ○ | |||||
| (i)キャプチャしたビデオ解像度の変更 | ○ | |||||
| (A)スクリーンシェア | ○ |
*C-1 getDeviceNames, getDeviceCount, getDeviceName(index), getNameOfFrontFacingDevice, getNameOfBackFacingDevice
M57-M61
| 項目 | M57 | M58 | M59 | M60 | M61 | 備考 |
|---|---|---|---|---|---|---|
| RTCRtpMuxPolicyを"require"へ変更 | ○ | 既存は"negotiate".下位互換性を維持する場合は"negotiate"と明示する. | ||||
| getUserMediaのエラー判定の変更 | ○ | audio capture deviceへのアクセスが出来たかを元に変定する | ||||
| 既存のVoiceEngine API(VoE APIs)の廃止 | ○ | 今後のアップデートでAPIが削除. | ||||
| 統計にエコー検出を追加 | ○ | chrome://webrtc-internalsで有効化 | ||||
| H.264 HWエンコードのサポート(Mac) | ○ | |||||
| DTMFで複数のビットレートをサポート | ○ | |||||
| (A)H.264 HWエンコードのサポート(Chrome) | ○ | |||||
| (A)Full HD,4k サポート | ○ | |||||
| (A)独自メトリクスの実装を許可 | ○ | |||||
| (i)最大ビットレートの設定 | ○ | |||||
| (i)Bluetoothサポート | △ | A2DPは未サポート | ||||
| (i)videoの画面回転 | ○ | |||||
| Promise-based RTCPeerConnection.getStats() | ○ | |||||
| Opus 120ms encoding | ○ | 120ms周期のエンコーディングでオーバヘッドを削減 | ||||
| RTCPeerConnection.setConfiguration() | ○ | |||||
| 認証付きHTTPプロキシのサポート | ○ | |||||
| (A)WebRTC Android Library (.aar)の生成 | ○ | Android Studio projectでWebRTCをサポート | ||||
| VP9 HWエンコードのサポート | ○ | |||||
| Video jitter buffer処理の変更 | ○ | |||||
| 音声出力のデバッグ録音 | ○ |
Firefox
◯:デフォルト △:オプション/flag
40-45
| 項目 | 40 | 41 | 42 | 43 | 44 | 45 | 備考 |
|:--- |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---|
| ALPN対応 | ◯ | | | | | | | | | | |
| Perfect Forward Security(PSA) | | ◯ | | | | | | | | | |
| IPv6 | | ◯ | | | | | | | | | |
| Control Ice candidate generation | | ◯ | | | | | | | | | LANアドレスの隠蔽 |
| ExtentionのOffer/Answer拒否設定 | | ◯ | | | | | | | | | |
| H.264 | | ◯ | | | | | | | | | |
| ICE-TCP | | ◯ | | | | | | | | | |
| Canvas MediaStream | | △ | | ◯ | | | | | | | |
| MediaStreamTrack.applyConstraints | | | | ◯ | | | | | | | カメラ解像度の変更 |
| スクリーン共有マルチモニタ対応 | | | | △ | | | | | | | 共有スクリーンを選択 |
| RTCPeerConnection canTrickleIceCandidates | | | | | ◯ | | | | | | リモートのTrickleICE対応可否を判定 |
| DataChannel-bufferedAmountLow event | | | | | ◯ | | | | | | DataChannelバッファ溢れの監視 |
| Vendor prefix削除(PeerConnection) | | | | | ◯ | | | | | | gUMはFF36で削除済み |
| 音声32KHz対応 | | | | | ◯ | | | | | | |
| MediaStream.addTrack()/removeTrack()| | | | | ◯ | | | | | | |
| Canvas MediaStream(Mobile) | | | | | ◯ | | | | | | |
| MediaRecorder API | | | | | ◯ | | | | | | |
| スクリーン共有でgUMの解像度指定 | | | | | ◯ | | | | | | |
| Delay-Agnostic AEC | | | | | | △ | | | | | |
| 周期波形のWebAudio対応 | | | | | | ◯ | | | | | |
| 音声パフォーマンスの改善 | | | | | | ◯ | | | | | |
46-50
| 項目 | 46 | 47 | 48 | 49 | 50 | 備考 |
|---|---|---|---|---|---|---|
| Delay-Agnostic AEC | ○ | 遅延時間非依存のエコーキャンセラ | ||||
| VP9 | △ | テスト中.->51で対応 | ||||
| Simulcast | ○ | |||||
| パルス音源の全二重サポート(Linux) | ◯ | |||||
| リモートTrack単位でRTCRtpReceiver追加 | ◯ | |||||
| gUMでエコーキャンセラのON/OFF指定 | ◯ | |||||
| WebRTCセッションの履歴クリア | ◯ | about:webrtcのセッション履歴のクリア | ||||
| RTCRtpSender.setParameters Promise | ◯ | |||||
| RTCRtpEncodingParameters.scaleResolutionDownBy | ◯ | 解像度縮小(Simulcast/RtpSender) | ||||
| マルチプロセスモード(e10s)でのJumbo frame動作の許可 | ◯ | |||||
| モノラルOpusのサポート | ◯ | |||||
| IPv6における高負荷状態の改善 | ◯ | |||||
| 音声全二重モードのデフォルト化 | △ | ○ | Windowsは49でサポート | |||
| ICE restart/update | ○ | IPアドレス変更や,インターフェスのダウンに伴う再ネゴシエーションのサポート | ||||
| MediaStreamとMediaStreamTrackの複製 | ○ | *F-1 | ||||
| MediaRecoder API@Androidソフトウェアコーデック対応 | ○ | |||||
| JabraヘッドセットとLogitech C920の音声歪み修正 | ○ | |||||
| MediaStream.getTrackById() | ○ | |||||
| gUM(cam+mic)で取得に失敗したソース以外はgUMを継続 | ○ | |||||
| ontrackとonaddstreamの発火条件見直し | ○ | |||||
| SDPネゴシエーション中のa=inactive有効化 | ○ | |||||
| RTCPeerConnection.addTrackで任意のストリームを追加 | ○ | |||||
| 'b=TIAS'による帯域制限有効化 | ○ | |||||
| REMBデフォルト化 | ○ | |||||
| OSXでのAVFoundation対応 | ○ | |||||
| ICE consent freshness | ○ | |||||
| 全Constraintsが渡されたとき,ダウン/アップサンプリング無効化 | ○ | |||||
| mochitestsを使った,NAT・TURNのテスト自動化 | ○ | |||||
| Win7での高ビットレート時の送受信パケットロス事象修正 | ○ | |||||
| mochitestsを使ったNAT・TURNのテスト自動化 | ○ | |||||
| TMMBRデフォルト化 | ○ | 送信側に最大メディアストリームビットレートを要求する | ||||
| MediaStream.onaddtrack() | ○ | webrtc-pcのSDP再ネゴやvideo, audioの変化で発生 | ||||
| MediaStreamTrack.readyState/onended | ○ | |||||
| MediaStreamAudioSourceNodeのGCバグ修正 | ○ | |||||
| バックグラウンドスレッドによる再生位置とリスナのスケジュール最適化 | ○ | |||||
| IIR filterへ新しいIIRFilterNodeの追加 | ○ | |||||
| 新しい仕様の音声フィルタの追加 | ○ | |||||
| SDP再ネゴでrecvonlyとした後にビデオが描画されない問題の修正 | ○ | |||||
| Delay-Agnostic AEC | ○ | Chrome M51からのフィードバック | ||||
| MediaStreamTrack.getConstraints() + getSettings() | ○ | |||||
| H.264 codecのPacketization mode修正 | ○ | |||||
| FEC | △ | FF51で正式対応 | ||||
| SDP m-line変更(UDP/TLS/RTP/SAVPF) |
*F-1:Changing Firefox MediaStreams to accommodate cloning
51-55
| 項目 | 51 | 52 | 53 | 54 | 55 | 備考 |
|---|---|---|---|---|---|---|
| VP9 | ○ | Offer/AnswerでVP9と明示する必要あり.明示しない場合はH.264. | ||||
| 自ホストが持つIPアドレス,ルーティング通知の制御 | ○ | *F-2 | ||||
| VP9 | ○ | |||||
| RTCPeerConnection.removeStreamの削除 | ○ | |||||
| NAT <-> symmetric NATでの単体テスト | ○ | |||||
| mediaDevices.ondevicechange | △ | ○ | Macは51で対応.WindowsとLinuxは52. | |||
| NACK有効時にH.264用FECの送信を無効化 | ○ | |||||
| Screenシェアリング許可設定のダイアログ化 | ○ | 以前の事前登録制ホワイトリストは無効化 | ||||
| DTMFサポート | ○ | ダイアルトーン | ||||
| SDP再ネゴ/トラック置き換えによる解像度低下バグ修正 | ○ | |||||
| ICE切断状態の検出サポート | ○ | |||||
| MediaStreamsのアクティブ/非アクティブ,停止操作の追加 | ○ | |||||
| SetValueCurveAtTimeイベント計算時に線形補間を実行 | ○ | ConstantSourceNodeによる波形合成に利用 | ||||
| ConstantSourceNode | ○ | |||||
| 同一解像度で複数のFPSを表現する能力を追加 | ○ | |||||
| webrtc.org stable branch 49へのアップデート | ○ | |||||
| libvpx 1.6.1へのアップデート | ○ | VP8/VP9 code SDK | ||||
| TRUN/TLSサポート | ○ | |||||
| MediaRecorderのパフォーマンス改善(30FPS対応) | ○ | |||||
| (A)音声全二重サポート | △ | ○ | 54で全OSが音声二重をサポート | |||
| SDP再ネゴシエーションで帯域幅を再設定 | ○ | |||||
| RTCStatsTypeの項目名の仕様準拠 | ○ | ハイフン(-)のヌケを修正 | ||||
| プロファイラ項目の追加(Canvas frame capturing) | ○ | |||||
| canvasのビデオストリームにタイムスタンプ付与 | ○ | |||||
| 有効なICE TCPが同一のsrc portが失敗すると落ちてしまう | ○ | |||||
| REDで誤り検出訂正を未使用時に"empty" fmtpを出力しない | ○ | |||||
| ICE TCP有効化 | ○ | media.peerconnection.ice.tcp | ||||
| Citrix audioデバイス再オープン失敗でハングアップしない | ○ | |||||
| Nightlyでスクリーンシェアリングプレビューの正常表示 | ○ | |||||
| RTP toffset, abs-time, 3gpp:video-orientation | ○ | RTPの拡張機能群.abs-time *F-3 | ||||
| ログ機構の置き換え(PRLogModuleInfo -> LazyLogModule) | ○ |
*F-2 WebRTC IP Address Handling Requirements
*F-3 abs-send-time
Edge
実装済みに近い順からステータスを列挙すると次の通り.
S: Supported
Pb: Preview build
Id: In development
Uc: Under consideration
D: Deprecated
NP: Not currently planned
実装状況
| 項目 | Status | 備考 |
|---|---|---|
| VP9 Video Playback | S | |
| ORTC | S | |
| WebSocket | S | |
| Web Speech API (synthesis) | S | 音声合成 |
| WebSocket | S | |
| abs-send-time | Pb | |
| Google Receiver Estimated Maximum Bitrate(goog-remb) | Pb | |
| PLI, Generic NACK feedback messages | Pb | RFC 4585 |
| RTP Retransmission | Pb | RFC 4588 |
| H.264/AVC | Pb | |
| VP8 | Pb | |
| WebRTC v1.0 API | Pb | |
| packetization-mode = 1 | Pb | RFC 7742 |
| Web Speech API(input) | Id | |
| DataChannel | Uc |
参考資料
Chrome
- Chromeリリーススケジュール
- WebRTC Conference Japan 2016のGoogle発表資料
- Kranky Geek WebRTC 2015 - What's next for WebRTC?
- Implement an audio output device API for the web
- How to get a WebRTC Diagnostic Recording from Chrome 49+
- M47 release note
- M48 release note
- M49 release note
- M50 release note
- M51 release note
- M52 release note
- M53 release note
- M54 release note
- M55 release note
- M56 release note
- M57 release note
- M58 release note
- M59 release note
- PSA: WebRTC M60 Release Notes
- PSA: WebRTC M61 Release Notes
Firefox
- Media/WebRTC
- Firefox releases
- Media/WebRTC/ReleaseNotes/43 - MozillaWiki
- Media/WebRTC/ReleaseNotes/44 - MozillaWiki
- Media/WebRTC/ReleaseNotes/45 - MozillaWiki
- Media/WebRTC/ReleaseNotes/46 - MozillaWiki
- Media/WebRTC/ReleaseNotes/47 - MozillaWiki
- Media/WebRTC/ReleaseNotes/48 - MozillaWiki
- Media/WebRTC/ReleaseNotes/49 - MozillaWiki
- Media/WebRTC/ReleaseNotes/50 - MozillaWiki
- Media/WebRTC/ReleaseNotes/51 - MozillaWiki
- Media/WebRTC/ReleaseNotes/52 - MozillaWiki
- Media/WebRTC/ReleaseNotes/53 - MozillaWiki
- Media/WebRTC/ReleaseNotes/54 - MozillaWiki
- Media/WebRTC/ReleaseNotes/55 - MozillaWiki
Edge
- Platform status
- Edge ORTC/WebRTC Q&A
- MicrosoftEdge/Status
- API Catalog
- Introducing WebRTC 1.0 and interoperable real-time communications in Microsoft Edge
Safari
- Safari 11.0
- Announcing WebRTC and Media Capture | WebKit
- A Closer Look Into WebRTC | WebKit
- Safari Technology Preview 32, with WebRTC, is Now Available | WebKit
- Release Notes for Safari Technology Preview 33 | WebKit
- Release Notes for Safari Technology Preview 34 | WebKit
- Release Notes for Safari Technology Preview 35 | WebKit
- Release Notes for Safari Technology Preview 36 | WebKit