Google dự định chuyển đổi hình thức triển khai WebRTC của Chrome từ định dạng SDP hiện tại (gọi là "Kế hoạch B") thành một định dạng tuân thủ tiêu chuẩn (“Kế hoạch hợp nhất”, Draft-ietf-rtcweb-jsep) trong vài quý tới.
Kế hoạch này bao gồm 5 giai đoạn và một tính năng API tạm thời.
Đối tượng sẽ bị ảnh hưởng
Những người sử dụng nhiều bản âm thanh hoặc nhiều bản video trong một bản nhạc PeerConnection sẽ phải thử nghiệm sản phẩm theo Gói hợp nhất và điều chỉnh cho phù hợp. Trong trường hợp cuộc gọi được bắt đầu từ một điểm cuối không phải của Chrome và đã trả lời bằng Chrome, thì hình thức của đề nghị có thể phải thay đổi. Những người phân tích cú pháp SDP chi tiết và quan tâm đến các thuộc tính msid sẽ phải kiểm tra xem mã phân tích cú pháp của họ nhận định dạng mới (a=msid). Thông tin chi tiết về việc những thay đổi này và cách các ứng dụng cần thay đổi sẽ được áp dụng bị phụ thuộc. Chúng tôi nghĩ rằng hầu hết các ứng dụng chỉ sử dụng một âm thanh và một bản video riêng lẻ cho mỗi RTCPeerConnection sẽ không bị ảnh hưởng bởi thay đổi này.
Tính năng API
Chúng tôi đang thêm một tính năng mới vào RTCPeerConnection của RTCConfiguration:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration có thể được chuyển đến hàm khởi tạo của một RTCPeerConnection, đồng thời mọi nội dung cung cấp và câu trả lời được tạo sẽ ở định dạng Kế hoạch hợp nhất. Các lệnh gọi đến setLocalDescription và setRemoteDescription cũng sẽ yêu cầu SDP phải ở định dạng Kế hoạch hợp nhất; nếu trang web ở định dạng Chrome cũ thì tất cả trừ bản âm thanh đầu tiên và bản video đầu tiên sẽ bị bỏ qua.
Ngoài ra còn có một cờ dòng lệnh (–enable-features=RTCUnifiedPlanByDefault trong Chrome M71 trở lên, –enable-blink-features=RTCUnifiedPlanByDefault trong các phiên bản trước đó) cho phép đặt giá trị mặc định của cờ này thành "kế hoạch thống nhất".
Các giai đoạn
Giai đoạn 1: Triển khai Kế hoạch hợp nhất
Trong giai đoạn này, tính năng Kế hoạch hợp nhất được phát triển dựa trên một cờ thử nghiệm được cung cấp kể từ M65. Cho đến giai đoạn 2, tốt nhất là thử nghiệm với Chrome Canary bằng cách sử dụng “–enable-blink-features=RTCUnifiedPlan”.
Giai đoạn 2: Cung cấp rộng rãi tính năng API
Phát hành trong M69 (thử nghiệm vào tháng 8 năm 2018, ổn định vào tháng 9 năm 2018)
Trong giai đoạn này, giá trị mặc định của cờ sdpSemantics là "plan-b". Trong Giai đoạn 2, những người triển khai phụ thuộc vào định dạng SDP dự kiến sẽ chạy thử nghiệm để xem các ứng dụng có hoạt động khi áp dụng Kế hoạch hợp nhất hay không sử dụng. Đối với các ứng dụng hỗ trợ Firefox, chúng tôi hy vọng đây là tính năng rất đơn giản tập thể dục: chỉ làm như bạn làm với Firefox.
Bạn có thể thay đổi giá trị mặc định của cờ sdpSemantics trong "chrome://flags"; hãy tìm tính năng "WebRTC: Sử dụng ngữ nghĩa SDP của kế hoạch hợp nhất theo mặc định".
Giai đoạn 3: Chuyển chế độ mặc định
Ngày chuyển đổi là M72 (thử nghiệm tháng 12 năm 2018, ổn định vào tháng 1 năm 2019).
Trong giai đoạn này, chúng tôi đã thay đổi giá trị mặc định của cờ sdpSemantics thành "kế hoạch thống nhất". Những ứng dụng phát hiện ra rằng mình cần thêm thời gian để chuyển đổi cờ sdpSemantics một cách rõ ràng thành "plan-b" để khôi phục hành vi trước đó.
Giai đoạn 4: Thực hiện "Kế hoạch B"
Trong giai đoạn này, việc đặt cờ sdpSemantics thành "plan-b" dẫn đến một ngoại lệ đang được gửi. Trình quản lý thẻ của Google được gửi vào Canary từ M93. Kể từ M96, ngoại lệ đang đưa vào tất cả các kênh, bao gồm cả Kênh chính thức.
Trong giai đoạn này, Bản dùng thử không còn được dùng nữa có sẵn được cho phép sử dụng Kế hoạch B mà không có trường hợp ngoại lệ ném nhưng bản dùng thử ngừng hoạt động từ ngày 25 tháng 5 năm 2022.
Giai đoạn 5: Xoá "Kế hoạch B" khỏi Chromium
Sau khi hết thời gian dùng thử, Gói B sẽ bị xoá khỏi Chrome. Tại thời điểm này, cờ sdpSemantics sẽ bị xoá. Đang cố đặt thành "plan-b" sẽ không gửi một trường hợp ngoại lệ, nhưng việc đó sẽ không còn hiệu lực.
Kế hoạch B vẫn có sẵn sau các cờ đặc biệt hoặc bản dựng đặc biệt nhưng phiên bản đầy đủ việc xoá mã sẽ diễn ra vào nửa cuối năm 2022.
Giai đoạn 6: Ngừng sử dụng và xoá "Gói B" khỏi WebRTC
Kế hoạch B đã được đánh dấu là không dùng nữa trong WebRTC nhưng vẫn có sẵn. Chúng tôi sẽ loại bỏ vào năm 2023.
Chuẩn bị ứng dụng của bạn cho kế hoạch hợp nhất
Để biết thông tin chi tiết về sự khác biệt giữa Kế hoạch B và Kế hoạch hợp nhất cũng như cách có thể cần được cập nhật để chuẩn bị cho Kế hoạch hợp nhất, hãy xem Hướng dẫn chuyển đổi cho "Kế hoạch hợp nhất" (JavaScript)
Đối với các ứng dụng gốc (C++), hãy xem tài liệu "Di chuyển ứng dụng gốc/dành cho thiết bị di động sang Gói hợp nhất"