統一方案 SDP 格式 - 轉換計畫

Google 計劃將 Chrome 的 WebRTC 實作從 目前的 SDP 格式 (稱為「Plan B」) 符合標準格式 「統合計畫」和「草稿-ietf-rtcweb-jsep」都在接下來幾季內。

這項計畫包含 5 個階段,以及一項暫時的 API 功能。

受影響的對象

在單一裝置上使用多個音軌或多個視訊軌的使用者 PeerConnection 將需要透過統一計畫測試產品,並做出調整 。如果透過非 Chrome 端點發起通話 並在 Chrome 回覆後,優惠形式可能需要變更。符合以下條件的使用者 執行詳細的 SDP 剖析,注意 msid 屬性後必須確認 就會採用新的格式 (a=msid)。關於 以及應如何套用變更 視情況而定。我們認為幾乎所有應用程式只使用一種音訊 這項變更不會影響每個 RTCPeerConnection 的單一影片音軌。

API 功能

我們即將在 RTCPeerConnection 的 RTCConfiguration 中新增一項功能:

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


partial dictionary RTCConfiguration {
   SdpSemantics sdpSemantics;
}

RTCConfiguration 可以傳遞給 RTCPeerConnection 的建構函式。 您製作的所有提案和答案都會採用「統一計劃」格式 對 setLocalDescription 和 setRemoteDescription 的呼叫也會收到 SDP 採用統一企劃書格式若是舊版 Chrome 格式,則 除了第一組音軌和第 1 個音軌外,其他所有音訊都會被忽略。

此外還有指令列標記 (–enable-features=RTCUnifiedPlanByDefault in Chrome M71 以上版本,-enable-blink-features=RTCUnifiedPlanByDefault ),允許將這個標記的預設值設為 「統一方案」

階段

第 1 階段:實作統合計畫

在這個階段,我們開發統一計畫,是以實驗標記為基礎開發而成 自 M65 起,我們就支援 3D 此功能在階段 2 之前,使用 Chrome Canary 進行測試最聰明 使用「–enable-blink-features=RTCUnifiedPlan」提醒

第 2 階段:正式發布 API 功能

推出於 M69 (2018 年 8 月的 Beta 版,2018 年 9 月穩定版)

在此階段中,sdpSemantics 旗標的預設值是「plan-b」。於 第 2 階段:根據 SDP 格式實作內容的使用者 預期會執行測試,確認應用程式在整合計畫處於哪個階段時,是否能夠正常運作 相關單位會如何運用資料,並讓他們覺得自己 獲得充分告知,且能夠針對該使用方式表示同意針對支援 Firefox 的應用程式,我們預期這個流程非常簡單 練習:就像在 Firefox 中一樣

sdpSemantics 旗標的預設值可在「chrome://flags」中變更。 請尋找「WebRTC:預設使用統一方案 SDP 語意」功能。

第 3 階段:切換預設值

切換日期為 M72 (Beta 版 2018 年 12 月,穩定版是 2019 年 1 月)。

在這個階段中,我們將 sdpSemantics 標記的預設值變更為 「統一方案」我們發現應用程式需要較多時間 將 sdpSemantics 旗標明確設為「plan-b」 先前的行為

第 4 階段:擲回「Plan B」

在此階段中,將 sdpSemantics 旗標設為「plan-b」會導致例外狀況 可能會發生的問題它已從 M93 擲回 Canary 中。自 M96 起,例外狀況 包括穩定版

在這個階段,系統會淘汰試用期 使用 Plan B 時允許存取,而不會擲回例外狀況 試用期已於 2022 年 5 月 25 日停止運作。

階段 5:將「Plan B」從 Chromium 中移除

試用期結束後,方案 B 就會從 Chrome 中移除。到目前為止 sdpSemantics 標記則會移除正在嘗試將其設為「plan-b」不會 擲回例外狀況,但不會再有任何效果。

特殊標記或特殊版本仍可提供方案 B,但完整的元件仍可使用 程式碼移除功能將於 2022 下半年生效。

第 6 階段:淘汰並移除 WebRTC 中的「方案 B」

方案 B 在 WebRTC 中已標示為已淘汰,但仍可供使用。 移除作業預計會在 2023 年生效。

為統合計畫準備應用程式

如要進一步瞭解方案 B 與統合方案的差異,以及 應用程式可能需要更新才能做好統合計畫的準備。詳情請參閱 「統合計畫」轉換指南 (JavaScript)

如果是原生 (C++) 應用程式,請參閱「將原生/行動應用程式遷移至整合計畫」文件