ブラウザにおけるWebRTCのロードマップ

  • 38
    いいね
  • 0
    コメント

Chrome/Firefox/EdgeのWebRTCアップデート情報のまとめ.

API実装状況

各ブラウザにおける実装状況は次を参照.(@gtk2さん作)

WebRTC Object Member

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
ExtentionのOffer/Answer拒否設定
H.264
ICE-TCP
Canvas MediaStream
MediaStreamTrack.applyConstraints
スクリーン共有マルチモニタ対応
RTCPeerConnection canTrickleIceCandidates
DataChannel-bufferedAmountLow event
Vendor prefix削除(PeerConnection)
音声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

Firefox

Edge