0Pricing
Real-Time Streaming Systems (WebRTC + Live Data) · 课时

SDP:会话描述协议

学习 SDP 如何描述通信双方为协商连接而交换的媒体格式、编解码器和网络信息。

SDP:会话描述协议 是 CoddyKit 上的免费 Real-Time Streaming Systems (WebRTC + Live Data) 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Real-Time Streaming Systems (WebRTC + Live Data) 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Real-Time Streaming Systems (WebRTC + Live Data) 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

What is SDP?

SDP stands for Session Description Protocol. It's a text-based format used in WebRTC to describe the capabilities and parameters of a media session.

Think of it as a blueprint for what kind of audio, video, and data a peer wants to send or receive, and how it can be reached.

SDP's Role in WebRTC

Before two WebRTC peers can send data directly, they need to agree on many things:

  • What media types (audio, video, data) they support.
  • Which codecs to use (e.g., Opus for audio, VP8 for video).
  • Their network addresses and connection methods.

SDP is the standard way to exchange this crucial information.

SDP in Offer/Answer

WebRTC uses an "Offer/Answer" model for negotiation. One peer creates an SDP Offer, describing its capabilities. The other peer receives it and creates an SDP Answer, indicating its own capabilities and agreement.

This exchange happens via a signaling server, which we discussed in the previous lesson.

SDP Message Structure

An SDP message is a collection of lines, each starting with a single lowercase letter followed by an equals sign (=). These lines are grouped into a session description and one or more media descriptions.

Common lines include: v=, o=, s=, t=, c=, m=, and a=.

SDP: Version & Origin

Every SDP message begins with a version line and an origin line:

  • v=0: Specifies the SDP protocol version. Always 0 for WebRTC.
  • o= IN IP4
    : Describes the session's originator and identifier.

The <sess-id> and <sess-version> are unique numbers, and <address> is typically 127.0.0.1 for local generation.

SDP: Session Name & Time

Next, we find the session name and time description:

  • s=-: The session name. Often just a hyphen for WebRTC.
  • t=0 0: The session's active time. 0 0 means permanent/always active for WebRTC.

These lines provide basic context for the overall session.

SDP: Connection Data

The c= line provides connection data, specifically the IP address for the session. In WebRTC, this is often set to 0.0.0.0 or 127.0.0.1 as the actual peer-to-peer connection addresses are negotiated later via ICE candidates.

Example: c=IN IP4 0.0.0.0

SDP: Media Descriptions (`m=`)

The m= line is critical! It describes a specific media stream (audio, video, or data channel). An SDP can have multiple m= lines.

Format: m=

  • <media>: audio, video, or application (for data channels).
  • <port>: The port number (often 9 for WebRTC, actual port from ICE).
  • <protocol>: E.g., UDP/TLS/RTP/SAVPF.
  • <fmt list>: A list of supported payload types/codecs.

SDP: Attributes (`a=`)

a= lines provide additional attributes for the session or a specific media stream. They are highly flexible and carry a lot of WebRTC-specific information.

  • a=rtpmap: /: Maps payload types to codecs.
  • a=fingerprint:...: TLS certificate fingerprint.
  • a=sendrecv, a=sendonly, a=recvonly: Directionality of media.
  • a=ice-ufrag, a=ice-pwd: Used for ICE connectivity checks.

See a Simplified SDP

Here's a simplified example of what an SDP offer might look like. Notice the different lines and their roles in describing the session and media capabilities.

Try running it to see the raw SDP text!

function main() {
  const sdpExample = `v=0
o=- 3749449080 3749449080 IN IP4 127.0.0.1
s=-
t=0 0
c=IN IP4 0.0.0.0
m=audio 9 UDP/TLS/RTP/SAVPF 111
a=rtpmap:111 opus/48000/2
a=mid:audio
a=sendrecv
a=ice-ufrag:abcdefg
a=ice-pwd:hijklmn
a=fingerprint:sha-256 A1:B2:C3:D4:E5:F6:A7:B8:C9:D0:E1:F2:A3:B4:C5:D6:E7:F8:A9:B0:C1:D2:E3:F4:A5:B6:C7:D8
`;
  console.log("Simplified SDP Offer:");
  console.log(sdpExample);
}

main();

Quick Check on SDP

Which SDP line primarily describes the type of media (audio, video, or data), its associated port, transport protocol, and supported formats?

Recap: SDP Essentials

Great job! You've learned about SDP, the Session Description Protocol, which is fundamental to WebRTC.

  • SDP is a text format for describing media and network capabilities.
  • It's used in the Offer/Answer model to negotiate connections.
  • Key lines include v=, o=, s=, t=, c=, m=, and a=.
  • The m= line describes media, and a= lines provide rich attributes.

Next, we'll dive into ICE candidates, which help peers find the best network path!

常见问题解答

「SDP:会话描述协议」课时是免费的吗?

是的 — 「SDP:会话描述协议」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Real-Time Streaming Systems (WebRTC + Live Data) 课程的其余内容,请升级到 CoddyKit PRO。 Real-Time Streaming Systems (WebRTC + Live Data) 课程共包含 4 节课。

「SDP:会话描述协议」这节课中我会学到什么?

学习 SDP 如何描述通信双方为协商连接而交换的媒体格式、编解码器和网络信息。 你通过在浏览器中直接运行的动手代码来练习 Real-Time Streaming Systems (WebRTC + Live Data),全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Real-Time Streaming Systems (WebRTC + Live Data) 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Real-Time Streaming Systems (WebRTC + Live Data) 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「SDP:会话描述协议」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Real-Time Streaming Systems (WebRTC + Live Data) 课中编写并运行代码吗?

能。每节 Real-Time Streaming Systems (WebRTC + Live Data) 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 信令服务器的作用
  2. SDP:会话描述协议
  3. ICE 候选项与连接性
  4. 重新协商与连接状态
← 返回 Real-Time Streaming Systems (WebRTC + Live Data)