統合プランの SDP の形式 - 移行計画

Google は、今後数四半期以内に、Chrome の WebRTC 実装を現在の SDP 形式(「プラン B」)から標準準拠の形式(「統合プラン」、draft-ietf-rtcweb-jsep)に移行する予定です。

この計画には 5 つのフェーズと 1 つの一時的な API 機能が含まれます。

影響を受けるユーザー

1 つの PeerConnection で複数の音声トラックまたは複数の動画トラックを使用する場合は、統合プランでプロダクトをテストし、それに応じて調整する必要があります。Chrome 以外のエンドポイントから呼び出しが開始され、Chrome から応答された場合、オファーの形式を変更しなければならないことがあります。詳細な SDP 解析を行い、msid 属性を気にしている場合は、解析コードが新しい形式(a=msid)を取得していることを確認する必要があります。変更が必要かどうか、アプリをどのように変更する必要があるかについては、アプリによって異なります。RTCPeerConnection ごとに 1 つの音声トラックと 1 つの動画トラックのみを使用するほとんどのアプリケーションは、この変更の影響を受けません。

API 機能

RTCPeerConnection の RTCConfiguration に、次の新機能を追加します。

enum SdpSemantics {
  "plan-b",
  "unified-plan"
};


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfiguration は RTCPeerConnection のコンストラクタに渡すことができます。作成されるすべてのオファーとレスポンスは、統合プラン形式になります。setLocalDescription と setRemoteDescription の呼び出しでも、SDP は統合プラン形式であることが想定されます。以前の Chrome 形式の場合は、最初の音声トラックと最初の動画トラック以外は無視されます。

また、このフラグのデフォルト値を「unified-plan」に設定できるコマンドライン フラグ(Chrome M71 以降では --enable-features=RTCUnifiedPlanByDefault、それ以前のバージョンでは --enable-blink-features=RTCUnifiedPlanByDefault)もあります。

フェーズ

フェーズ 1: 統合プランを実装する

このフェーズでは、統合プランは M65 以降で利用可能な試験運用版フラグを使用して開発されていました。フェーズ 2 までは、「--enable-blink-features=RTCUnifiedPlan」を使用して Chrome Canary でテストすることをおすすめします。

フェーズ 2: API 機能を一般提供にする

M69 でリリース(ベータ版: 2018 年 8 月、安定版: 2018 年 9 月)

このフェーズでは、sdpSemantics フラグのデフォルト値は「plan-b」でした。フェーズ 2 では、SDP 形式に依存する実装がある場合は、統合プランが使用されているときにアプリケーションが機能するかどうかを確認するためにテストを実行することが求められていました。Firefox をサポートするアプリケーションの場合、これは非常に簡単な演習です。Firefox の場合と同じように行ってください。

sdpSemantics フラグのデフォルト値は chrome://flags で変更できます。[WebRTC: Use Unified Plan SDP Semantics by default] 機能を探します。

フェーズ 3: デフォルトを切り替える

切り替えの時期は M72 です(ベータ版は 2018 年 12 月、安定版は 2019 年 1 月)。

このフェーズでは、sdpSemantics フラグのデフォルト値を「unified-plan」に変更しました。変換にさらに時間が必要だと判断したアプリは、以前の動作を復元するために、sdpSemantics フラグを明示的に「plan-b」に設定します。

フェーズ 4: 「プラン B」の投球を行う

このフェーズで sdpSemantics フラグを「plan-b」に設定すると、例外がスローされます。M93 の Canary で発生しています。M96 では、Stable を含むすべてのチャネルで例外がスローされていました。

このフェーズでは、例外をスローせずにプラン B を使用できる非推奨トライアルが利用可能でしたが、このトライアルは 2022 年 5 月 25 日に機能しなくなりました。

フェーズ 5: Chromium から「Plan B」を削除

トライアルが終了すると、Plan B は Chrome から削除されます。この時点で、sdpSemantics フラグが削除されます。これを「plan-b」に設定しようとしても例外はスローされませんが、効果はなくなります。

プラン B は、特別なフラグまたは特別なビルドで引き続き利用できます。ただし、コードの完全な削除は 2022 年下半期に実施されます。

フェーズ 6: WebRTC から「プラン B」のサポートを終了して削除

プラン B は WebRTC で非推奨とマークされていますが、引き続き使用できます。削除は 2023 年に実施される予定です。

統合プランの申請を準備する

プラン B と統合プランの違い、および統合プランに備えてアプリケーションを更新する必要がある方法について詳しくは、「統合プラン」移行ガイド(JavaScript)をご覧ください。

ネイティブ(C++)アプリの場合は、「ネイティブ/モバイルアプリを統合プランに移行する」をご覧ください。