Google планирует перевести реализацию Chrome WebRTC из текущего формата SDP (называемого «План Б») в формат, соответствующий стандартам («Единый план», Draft-ietf-rtcweb-jsep) в течение следующих нескольких кварталов.
План включает 5 этапов и одну временную функцию API.
Кто будет затронут
Людям, которые используют несколько аудиодорожек или несколько видеодорожек в одном PeerConnection, придется протестировать свой продукт в рамках единого плана и соответствующим образом адаптироваться. В случае, если вызов инициируется с конечной точки, не связанной с Chrome, и на него отвечает Chrome, форму предложения, возможно, придется изменить. Людям, которые выполняют детальный анализ SDP и заботятся об атрибутах msid, придется убедиться, что их код анализа принимает новый формат (a=msid). Подробности о том, потребуются ли изменения и как должны меняться приложения, будут зависеть от приложения. Мы считаем, что это изменение не затронет почти все приложения, использующие только одну аудио- и одну видеодорожку для каждого RTCPeerConnection.
Функция API
Мы добавляем одну новую функцию в RTCConfiguration RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration можно передать конструктору RTCPeerConnection, и все созданные предложения и ответы будут в формате единого плана. При вызовах setLocalDescription и setRemoteDescription также ожидается, что SDP будет в формате единого плана; если он имеет устаревший формат Chrome, то все, кроме первой звуковой дорожки и первой видеодорожки, будут игнорироваться.
Также имеется флаг командной строки (–enable-features=RTCUnifiedPlanByDefault в Chrome M71 и выше, –enable-blink-features=RTCUnifiedPlanByDefault в более ранних версиях), который позволяет установить значение этого флага по умолчанию «unified-plan».
Фазы
Этап 1. Реализация единого плана
На этом этапе Единый план разрабатывался под экспериментальным флагом, доступным с M65. До этапа 2 разумнее всего было протестировать Chrome Canary, используя «–enable-blink-features=RTCUnifiedPlan».
Этап 2. Сделайте функцию API общедоступной.
Выпущено в M69 (бета-версия — август 2018 г., стабильная версия — сентябрь 2018 г.)
На этом этапе значением по умолчанию флага sdpSemantics было «plan-b». На этапе 2 люди, чьи реализации зависели от формата SDP, должны были запустить тесты, чтобы проверить, работают ли их приложения при использовании Unified Plan. Мы ожидаем, что для приложений, поддерживающих Firefox, это будет очень простое упражнение: делайте то же, что и для Firefox.
Значение флага sdpSemantics по умолчанию можно изменить в «chrome://flags»; найдите функцию «WebRTC: использовать семантику Unified Plan SDP по умолчанию».
Этап 3. Переключение значения по умолчанию
Датой перехода был M72 (бета-декабрь 2018 г., стабильная версия — январь 2019 г.).
На этом этапе мы изменили значение по умолчанию флага sdpSemantics на «unified-plan». Приложения, обнаружившие, что им нужно больше времени для преобразования, явно установили флаг sdpSemantics на «plan-b», чтобы восстановить предыдущее поведение.
Этап 4. Сделайте бросок «Плана Б».
На этом этапе установка флага sdpSemantics в значение «plan-b» приводит к выдаче исключения. Он бросал Канарейку из М93. Начиная с M96, исключение выдавалось во всех каналах, включая Stable.
На этом этапе была доступна пробная версия устаревшей версии , которая позволяла использовать план Б без выдачи исключений, но пробная версия перестала работать 25 мая 2022 года.
Этап 5. Удаление «Плана Б» из Chromium
После окончания пробного периода Plan B будет удален из Chrome. На этом этапе флаг sdpSemantics будет удален. Попытка установить для него значение «plan-b» не вызовет исключения, но больше не будет иметь никакого эффекта.
План Б по-прежнему доступен со специальными флагами или специальными сборками, но полное удаление кода произойдет во втором полугодии 2022 года.
Этап 6. Прекращение поддержки и удаление «Плана Б» из WebRTC.
План Б уже помечен как устаревший в WebRTC, но он все еще доступен. Удаление должно произойти в 2023 году.
Подготовка вашего приложения для единого плана
Подробную информацию о различиях Плана Б и Единого плана, а также о том, как может потребоваться обновление вашего приложения при подготовке к Единому плану, см. в Руководстве по переходу на «Единый план» (JavaScript).
Информацию о собственных (C++) приложениях см. в документе «Миграция собственного/мобильного приложения на единый план».
,Google планирует перевести реализацию Chrome WebRTC из текущего формата SDP (называемого «План Б») в формат, соответствующий стандартам («Единый план», Draft-ietf-rtcweb-jsep) в течение следующих нескольких кварталов.
План включает 5 этапов и одну временную функцию API.
Кто будет затронут
Людям, которые используют несколько звуковых дорожек или несколько видеодорожек в одном PeerConnection, придется протестировать свой продукт в рамках единого плана и соответствующим образом адаптироваться. В случае, если вызов инициируется с конечной точки, не связанной с Chrome, и на него отвечает Chrome, форму предложения, возможно, придется изменить. Людям, которые выполняют детальный анализ SDP и заботятся об атрибутах msid, придется убедиться, что их код анализа принимает новый формат (a=msid). Подробности о том, потребуются ли изменения и как должны меняться приложения, будут зависеть от приложения. Мы считаем, что это изменение не затронет почти все приложения, использующие только одну аудио- и одну видеодорожку для каждого RTCPeerConnection.
Функция API
Мы добавляем одну новую функцию в RTCConfiguration RTCPeerConnection:
enum SdpSemantics {
"plan-b",
"unified-plan"
};
partial dictionary RTCConfiguration {
SdpSemantics sdpSemantics;
}
RTCConfiguration можно передать конструктору RTCPeerConnection, и все созданные предложения и ответы будут в формате единого плана. При вызовах setLocalDescription и setRemoteDescription также ожидается, что SDP будет в формате единого плана; если он имеет устаревший формат Chrome, то все, кроме первой звуковой дорожки и первой видеодорожки, будут игнорироваться.
Также имеется флаг командной строки (–enable-features=RTCUnifiedPlanByDefault в Chrome M71 и выше, –enable-blink-features=RTCUnifiedPlanByDefault в более ранних версиях), который позволяет установить значение этого флага по умолчанию «unified-plan».
Фазы
Этап 1. Реализация единого плана
На этом этапе Единый план разрабатывался под экспериментальным флагом, доступным с M65. До этапа 2 разумнее всего было протестировать Chrome Canary, используя «–enable-blink-features=RTCUnifiedPlan».
Этап 2. Сделайте функцию API общедоступной.
Выпущено в M69 (бета-версия — август 2018 г., стабильная версия — сентябрь 2018 г.)
На этом этапе значением по умолчанию флага sdpSemantics было «plan-b». На этапе 2 люди, чьи реализации зависели от формата SDP, должны были запустить тесты, чтобы проверить, работают ли их приложения при использовании Unified Plan. Мы ожидаем, что для приложений, поддерживающих Firefox, это будет очень простое упражнение: делайте то же, что и для Firefox.
Значение флага sdpSemantics по умолчанию можно изменить в «chrome://flags»; найдите функцию «WebRTC: использовать семантику Unified Plan SDP по умолчанию».
Этап 3. Переключение значения по умолчанию
Датой перехода был M72 (бета-декабрь 2018 г., стабильная версия — январь 2019 г.).
На этом этапе мы изменили значение по умолчанию флага sdpSemantics на «unified-plan». Приложения, обнаружившие, что им нужно больше времени для преобразования, явно установили флаг sdpSemantics на «plan-b», чтобы восстановить предыдущее поведение.
Этап 4. Сделайте бросок «Плана Б».
На этом этапе установка флага sdpSemantics в значение «plan-b» приводит к выдаче исключения. Он бросал Канарейку из М93. Начиная с M96, исключение выдавалось во всех каналах, включая Stable.
На этом этапе была доступна пробная версия устаревшей версии , которая позволяла использовать план Б без выдачи исключений, но пробная версия перестала работать 25 мая 2022 года.
Этап 5. Удаление «Плана Б» из Chromium
После окончания пробного периода Plan B будет удален из Chrome. На этом этапе флаг sdpSemantics будет удален. Попытка установить для него значение «plan-b» не вызовет исключения, но больше не будет иметь никакого эффекта.
План Б по-прежнему доступен со специальными флагами или специальными сборками, но полное удаление кода произойдет во втором полугодии 2022 года.
Этап 6. Прекращение поддержки и удаление «Плана Б» из WebRTC.
План Б уже помечен как устаревший в WebRTC, но он все еще доступен. Удаление должно произойти в 2023 году.
Подготовка вашего приложения для единого плана
Подробную информацию о различиях Плана Б и Единого плана, а также о том, как может потребоваться обновление вашего приложения при подготовке к Единому плану, см. в Руководстве по переходу на «Единый план» (JavaScript).
Информацию о собственных (C++) приложениях см. в документе «Миграция собственного/мобильного приложения на единый план».