Термин

SDP (Session Description Protocol)

Короткое определение

Текстовый формат (RFC 8866, январь 2021), описывающий параметры медиасессии: кодеки, порты, ICE-кандидаты, DTLS-fingerprints. Язык согласования WebRTC и SIP.

SDP старше WebRTC – он идёт от RFC 4566 (2006) и изначально был частью SIP и SAP для VoIP и multicast-анонсирования сессий. WebRTC взял SDP для согласования сессий: на старте peer connection инициатор генерит SDP-«offer» со списком поддерживаемых кодеков, транспортных параметров, ICE-кандидатов и security-инфо; получатель отвечает SDP-«answer», в котором выбирает поддерживаемое; стороны обмениваются ими по сигнальному каналу (обычно WebSocket) и запускают ICE для установления медиа-потока.

SDP – обычный текст с line-oriented-синтаксисом (каждая строка начинается с однобуквенного type-code: `v=` для version, `m=` для media, `a=` для attribute). Современный WebRTC SDP для одного видео + аудио занимает 50–100 строк. Формат часто критикуют за многословие и склонность к interop-багам (у каждого браузерного SDP-парсера свои особенности), но в WebRTC его никто не вытеснил. WHIP и WHEP оба используют SDP в качестве payload своих HTTP POST.

Для разработчика SDP в основном спрятан внутри `RTCPeerConnection.setLocalDescription()` и `setRemoteDescription()`. Выходит на поверхность, когда что-то ломается – codec-negotiation отвалился, потому что одной стороне не хватило профиля, ICE-кандидаты криво trickle-ятся, DTLS-fingerprints не совпали. Инспекция SDP – рутинный WebRTC-debugging-скилл; webrtc-internals в Chrome и rtcstats в Firefox выгружают его по запросу.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.