Термин
SDP (Session Description Protocol)
Текстовый формат (RFC 8866, январь 2021), описывающий параметры медиасессии: кодеки, порты, ICE-кандидаты, DTLS-отпечатки. Язык согласования WebRTC и SIP.
SDP старше WebRTC – он восходит к RFC 4566 (2006) и изначально использовался в SIP и SAP для VoIP и multicast-объявления сессий. WebRTC адаптировал SDP для согласования параметров сессии: при создании peer-соединения инициатор генерирует SDP-«offer», содержащий список поддерживаемых кодеков, транспортных параметров, ICE-кандидатов и информацию о безопасности; получатель отвечает SDP-«answer», в котором указывает выбранные параметры; стороны обмениваются этими описаниями по сигнальному каналу (обычно через WebSocket) и запускают ICE для установления медиа-потока.
SDP – это обычный текстовый формат с линейной структурой (каждая строка начинается с однобуквенного кодового типа: `v=` для версии, `m=` для медиа, `a=` для атрибута). Современный SDP в WebRTC для одного видео и одного аудиопотока занимает 50–100 строк. Формат часто критикуют за избыточность и склонность к проблемам совместимости (у каждого браузерного парсера SDP свои особенности), но в WebRTC его никто не заменил. WHIP и WHEP используют SDP в качестве полезной нагрузки своих HTTP POST-запросов.
Для разработчика SDP в основном скрыт внутри `RTCPeerConnection.setLocalDescription()` и `setRemoteDescription()`. Он проявляется, когда что-то ломается – например, codec-неготиация не прошла, потому что одной из сторон не хватило профиля, ICE-кандидаты неправильно trickle-ятся или DTLS-отпечатки не совпали. Анализ SDP – рутинный навык отладки WebRTC; инструменты webrtc-internals в Chrome и rtcstats в Firefox позволяют получить его по запросу.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.