WebRTC 使用 RTCPeerConnection 在浏览器间传递数据流,需要一个服务器协调沟通并发送控制信息,这个过程被称为 Signaling。实际上 WebRTC 不关心你使用什么手段进行 Signaling,你可以选择任何你偏爱的手段。Signaling 过程主要交换以下信息:

  • 用于p2p的网络信息
  • 浏览器支持的媒体编码格式以及通信协议

其中用于描述这些信息的协议格式叫SDP (Session Description Protocol)。一个典型的SDP结构如下:

v=0
o=- 7614219274584779017 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS
m=audio 1 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:W2TGCZw2NZHuwlnf
a=ice-pwd:xdQEccP40E+P0L5qTyzDgfmW
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:9c1AHz27dZ9xPI91YNfSlI67/EMkjHHIHORiClQe
a=rtpmap:111 opus/48000/2
...

SDP一般不单独使用,而是配合RTP/RTSP等协议进行通信