- WebRTC 教程
- WebRTC - 首页
- WebRTC - 概述
- WebRTC - 架构
- WebRTC - 环境
- WebRTC - MediaStream API
- WebRTC - RTCPeerConnection API
- WebRTC - RTCDataChannel API
- WebRTC - 发送消息
- WebRTC - 信令
- WebRTC - 浏览器支持
- WebRTC - 移动设备支持
- WebRTC - 视频演示
- WebRTC - 语音演示
- WebRTC - 文本演示
- WebRTC - 安全性
- WebRTC 资源
- WebRTC - 快速指南
- WebRTC - 有用资源
- WebRTC - 讨论
WebRTC - 会话描述协议
SDP 是 WebRTC 中的重要组成部分。它是一种旨在描述媒体通信会话的协议。它不传递媒体数据,而是用于对等节点之间协商各种音频和视频编解码器、网络拓扑结构和其他设备信息。它还需要易于传输。简单来说,我们需要一个包含用户设备所有信息的基于字符串的配置文件。这就是 SDP 的作用。
SDP 是一种众所周知的建立媒体连接的方法,它出现在 90 年代后期。在 WebRTC 之前,它已用于大量其他类型的应用程序,例如电话和基于文本的聊天。
SDP 是包含一系列键值对的字符串数据,由换行符分隔 -
key = value\n
键 是一个设置值类型的单个字符。值 是一个机器可读的配置值。
SDP 涵盖了给定用户的媒体描述和媒体约束。当我们稍后开始使用RTCPeerConnection对象时,我们将能够轻松地将其打印到 JavaScript 控制台。
SDP 是对等连接的第一部分。对等节点必须借助信令通道交换 SDP 数据才能建立连接。
这是一个 SDP Offer 的示例 -
v=0 o=- 487255629242026503 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE audio video a=msid-semantic: WMS 6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG m=audio 9 RTP/SAVPF 111 103 104 9 0 8 106 105 13 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:8a1/LJqQMzBmYtes a=ice-pwd:sbfskHYHACygyHW1wVi8GZM+ a=ice-options:google-ice a=fingerprint:sha-256 28:4C:19:10:97:56:FB:22:57:9E:5A:88:28:F3:04: DF:37:D0:7D:55:C3:D1:59:B0:B2:81 :FB:9D:DF:CB:15:A8 a=setup:actpass a=mid:audio a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=sendrecv a=rtcp-mux a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:126 telephone-event/8000 a=maxptime:60 a=ssrc:3607952327 cname:v1SBHP7c76XqYcWx a=ssrc:3607952327 msid:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG 9eb1f6d5-c3b246fe -b46b-63ea11c46c74 a=ssrc:3607952327 mslabel:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG a=ssrc:3607952327 label:9eb1f6d5-c3b2-46fe-b46b-63ea11c46c74 m=video 9 RTP/SAVPF 100 116 117 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:8a1/LJqQMzBmYtes a=ice-pwd:sbfskHYHACygyHW1wVi8GZM+ a=ice-options:google-ice a=fingerprint:sha-256 28:4C:19:10:97:56:FB:22:57:9E:5A:88:28:F3:04: DF:37:D0:7D:55:C3:D1:59:B0:B2:81 :FB:9D:DF:CB:15:A8 a=setup:actpass a=mid:video a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=sendrecv a=rtcp-mux a=rtpmap:100 VP8/90000 a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=rtcp-fb:100 goog-remb a=rtpmap:116 red/90000 a=rtpmap:117 ulpfec/90000 a=rtpmap:96 rtx/90000 a=fmtp:96 apt=100 a=ssrc-group:FID 1175220440 3592114481 a=ssrc:1175220440 cname:v1SBHP7c76XqYcWx a=ssrc:1175220440 msid:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG 43d2eec3-7116-4b29-ad33-466c9358bfb3 a=ssrc:1175220440 mslabel:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG a=ssrc:1175220440 label:43d2eec3-7116-4b29-ad33-466c9358bfb3 a=ssrc:3592114481 cname:v1SBHP7c76XqYcWx a=ssrc:3592114481 msid:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG 43d2eec3-7116-4b29-ad33-466c9358bfb3 a=ssrc:3592114481 mslabel:6x9ZxQZqpo19FRr3Q0xsWC2JJ1lVsk2JE0sG a=ssrc:3592114481 label:43d2eec3-7116-4b29-ad33-466c9358bfb3
这是从我自己的笔记本电脑获取的。乍一看很难理解。它首先使用 IP 地址标识连接,然后设置有关我的请求、音频和视频信息、加密类型的基本信息。所以目标不是理解每一行,而是熟悉它,因为你永远不必直接处理它。
以下是 SDP Answer -
v=0 o=- 5504016820010393753 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE audio video a=msid-semantic: WMS m=audio 9 RTP/SAVPF 111 103 104 9 0 8 106 105 13 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:RjDpYl08FRKBqZ4A a=ice-pwd:wSgwewyvypHhyxrcZELBLOBO a=fingerprint:sha-256 28:4C:19:10:97:56:FB:22:57:9E:5A:88:28: F3:04:DF:37:D0:7D:55:C3:D1:59:B0:B2:81 :FB:9D:DF:CB:15:A8 a=setup:active a=mid:audio a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=recvonly a=rtcp-mux a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:126 telephone-event/8000 a=maxptime:60 m=video 9 RTP/SAVPF 100 116 117 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:RjDpYl08FRKBqZ4A a=ice-pwd:wSgwewyvypHhyxrcZELBLOBO a=fingerprint:sha-256 28:4C:19:10:97:56:FB:22:57:9E:5A:88:28: F3:04:DF:37:D0:7D:55:C3:D1:59:B0:B2:81 :FB:9D:DF:CB:15:A8 a=setup:active a=mid:video a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=recvonly a=rtcp-mux a=rtpmap:100 VP8/90000 a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=rtcp-fb:100 goog-remb a=rtpmap:116 red/90000 a=rtpmap:117 ulpfec/90000 a=rtpmap:96 rtx/90000 a=fmtp:96 apt=100
您可以在https://www.rfc-editor.org/rfc/rfc4317.txt找到更多 SDP 示例,以及在http://tools.ietf.org/html/rfc4566找到更详细的规范。
总而言之,SDP 充当您设备的基于文本的配置文件,供尝试连接到您的其他用户使用。
webrtc_environment.htm
广告