跳到主内容
快讯直播
AI智模界
AI 词典

SDP:通话开始前,双方先交换的那张清单

一句话定义:SDP(Session Description Protocol,会话描述协议)是一种纯文本格式,用来把“这次通话要用哪些媒体、用什么编码、数据发到哪个地址”写成一份双方都能读懂的清单。

要强调一点:SDP 本身不传输音视频,也不负责建立连接。它就是一张“纸”,通常由信令通道(SIP、WebSocket 等)递给对方。真正搬运画面和声音的是 RTP/RTCP,打通网络路径的是 ICE。SDP 只负责说清楚“我们打算怎么谈”。

打个比方:两个人在嘈杂的会场要交谈,先得对几句暗号——“我说普通话,你听懂吗?我声音小,你靠近点;我在 3 号厅。”SDP 就是这几句暗号。

那这份清单里到底写了什么?几条关键内容:

SDP 中的行含义例子
m=有几路媒体、走什么传输方式一路音频用 RTP/AVP
c=连接地址收发媒体的 IP
a=rtpmap载荷类型编号与编码器的对应关系111 → Opus 48kHz 双声道
a=fmtp编码器的具体参数H.264 的 profile-level-id
a=sendrecv 等方向:双向、只发、只收、暂停屏幕共享常是只发
a=ice-ufrag/a=candidate打洞用的凭据和候选地址用于穿透 NAT
a=fingerprint加密证书指纹供 DTLS 校验

为什么叫“要约/应答(offer/answer)”?这借用了合同法的措辞。发起方递出一份“我会的全在这”的完整清单,这叫 offer;应答方从中挑一部分回过去,这叫 answer。规则很硬:answer 必须是 offer 的子集,不能凭空添加对方没提过的编码;两边 m= 行的数量和顺序必须一一对应;某一路不想要,就把它的端口写成 0,表示这路作废。这套规则的价值在于确定性——双方各自算一遍,得出的结果必须完全一致,不会出现“我以为用 A、你以为用 B”。

编解码器不匹配时会发生什么?假设 offer 里只有 Opus 音频和 VP8 视频,而对方只会 H.264 和 AAC,两边没有任何交集。这时 answer 会把对应的 m= 行端口置 0,结果是这通电话可能只剩一路能通,或者干脆建立不起来。用户侧看到的现象是“接通了,但黑屏”“有画面没声音”“单向声音”。还有一种更隐蔽的情况:双方都写 H.264,但 fmtp 里的档次参数不同,协商看起来成功了,解码器却解不出画面——这也是“连上了但没画面”的常见来源。

对从业者的意义:做实时语音助手、实时字幕、数字人这类产品,底层大多跑在 WebRTC 上,联调卡住时第一步就该把两端的 SDP 打出来逐行对,多半问题出在编码列表没有交集、方向写反、或者候选地址不通。对普通职场人:视频会议黑屏、单边没声音,别急着重装软件,很多时候是两端的编码谈不拢,换个客户端或让对方关掉某个“高清模式”就好了。具体支持哪些编码,以各产品和浏览器官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。