W najbliższych kwartałach planujemy przeniesienie implementacji WebRTC w Chrome z obecnego formatu SDP (zwanego „Planem B”) do formatu zgodnego ze standardami („Plan Zjednoczony”, draft-ietf-rtcweb-jsep).
Plan obejmuje 5 etapów i 1 funkcję przejściową interfejsu API.
Kogo to dotyczy
Osoby, które używają wielu ścieżek audio lub wielu ścieżek wideo w ramach jednej funkcji PeerConnection, będą musiały przetestować swój produkt w ramach Unified Plan i w odpowiednim zakresie go dostosować. W przypadku wywołania wywołanego z urządzenia końcowego innego niż Chrome i odpowiedzi na nie w Chrome konieczne może być zmiana formy oferty. Osoby, które wykonują szczegółowe analizy SDP i są zainteresowane atrybutami msid, muszą sprawdzić, czy ich kod analizy obsługuje nowy format (a=msid). Informacje o tym, czy zmiany będą potrzebne i jakie zmiany należy wprowadzić, zależą od aplikacji. Uważamy, że zmiana ta nie wpłynie na prawie wszystkie aplikacje, które korzystają tylko z jednego ścieżki audio i jednej ścieżki wideo na RTCPeerConnection.
Interfejs API
Dodajemy nową funkcję do RTCConfiguration RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
Konfigurację RTC można przekazać do konstruktora RTCPeerConnection, a wszystkie utworzone oferty i odpowiedzi będą w formacie Unified Plan. Wywołania setLocalDescription i setRemoteDescription będą również wymagać, aby plik SDP był w formacie Unified Plan. Jeśli jest w starszym formacie Chrome, wszystkie ścieżki oprócz pierwszej ścieżki audio i pierwszej ścieżki wideo zostaną zignorowane.
Dostępna jest też flaga wiersza poleceń (–enable-features=RTCUnifiedPlanByDefault w Chrome M71 i nowszych wersjach, –enable-blink-features=RTCUnifiedPlanByDefault we wcześniejszych wersjach), która umożliwia ustawienie domyślnej wartości tej flagi na „unified-plan”.
Etapy
Etap 1. Wdrażanie zintegrowanego planu
W tej fazie udoskonalenia planu zintegrowanego były dostępne za pomocą flagi eksperymentalnej od wersji M65. Do fazy 2. najrozsądniej było przeprowadzić testy za pomocą Chrome Canary, używając opcji „–enable-blink-features=RTCUnifiedPlan”.
Etap 2. Udostępnij funkcję interfejsu API ogólnie
Wprowadzono w wersji M69 (beta w sierpniu 2018 r., stabilna we wrześniu 2018 r.)
W tej fazie domyślną wartością flagi sdpSemantics była „plan-b”. W fazie 2 osoby, które miały implementacje zależne od formatu SDP, miały przeprowadzić testy, aby sprawdzić, czy ich aplikacje działają, gdy używany jest plan Unified. W przypadku aplikacji obsługujących Firefoxa powinno to być bardzo proste: postępuj tak samo jak w przypadku Firefoxa.
Domyślną wartość flagi sdpSemantics można zmienić na stronie „chrome://flags”. Poszukaj funkcji „WebRTC: domyślnie używaj semantyki SDP Unified Plan”.
Etap 3. Zmień ustawienie domyślne
Data przejścia to M72 (wersja beta w grudniu 2018 r., stabilna w styczniu 2019 r.).
W tej fazie zmieniliśmy domyślną wartość flagi sdpSemantics na „unified-plan”. Aplikacje, które potrzebowały więcej czasu na konwersję, ustawiły flagę sdpSemantics na „plan-b”, aby przywrócić poprzednie działanie.
Etap 4. Wykonaj rzut „Plan B”
Na tym etapie ustawienie flagi sdpSemantics na „plan-b” powoduje wyjątek. W Canary od wersji M93 występują błędy. Od wersji M96 wyjątek był zgłaszany we wszystkich kanałach, w tym w Stabilnym.
W tej fazie dostępna była wersja testowa wycofywania, która umożliwiała korzystanie z planu B bez zgłaszania wyjątków. Testowa wersja przestała działać 25 maja 2022 r.
Etap 5. Usuń „Plan B” z Chromium
Po zakończeniu okresu próbnego plan B zostanie usunięty z Chrome. W tym momencie flaga sdpSemantics zostanie usunięta. Próba ustawienia tej wartości na „plan-b” nie spowoduje wyjątku, ale nie będzie też miała żadnego wpływu.
Plan B jest nadal dostępny w ramach specjalnych flag lub specjalnych wersji, ale pełne usunięcie kodu nastąpi w II połowie 2022 r.
Etap 6. Wycofanie i usunięcie z WebRTC rozwiązania „Plan B”
Plan B jest już oznaczony jako wycofany w WebRTC, ale nadal jest dostępny. Usunięcie powinno nastąpić w 2023 r.
Przygotowywanie aplikacji do korzystania z planu zintegrowanego
Szczegółowe informacje o różnicach między planami B i ujednoczonym oraz o tym, jak przygotować aplikację do przejścia na plan ujednolicony, znajdziesz w przewodniku na temat przejścia na plan ujednolicony (JavaScript).
W przypadku aplikacji natywnych (C++) zapoznaj się z dokumentem „Migrating your native/mobile application to Unified Plan” (Przenoszenie natywnej lub mobilnej aplikacji na Unified Plan).