上一篇提到,要进行 WebRTC的连线需要处理以下两个问题,今天我们就来看看媒体协商的部分。
Bob 与 Alice 想要进行通话,Bob 的设备可以支援 VP8、H264,Alice 的设备可以支援 VP9、H264,若要确保两人都可以正确的编解码,最简单的办法就是取他们的交集 H264。
有一个专门的协议 ,称爲Session Description Protocol (SDP),可用於描述上述这类信息,在WebRTC中,参与视讯的双方必须先交换SDP信息,而交换SDP的过程,也称爲"媒体协商"。
Bob 要对 Alice发起通话:
RTCPeerConnection.createOffer
建立一个 offer ,并呼叫 setLocalDescription
设定本地的 SDP。setRemoteDescription
设定 Bob 的 SDP。RTCPeerConnection.createAnswer
建立一个 answer ,并呼叫 setLocalDescription
设定本地的 SDP。setRemoteDescription
设定 Alice 的SDPSDP(Session Description Protocol) 是一份具有特殊约定格式的纯文本描述文档(类似 JSON / XML),其中包含了 WebRTC 建立连接所需的 ICE 服务器资讯、音视讯编码资讯、加密演算法等,以便於在资料传递时两端都能看懂对方的资料,而开发者可以使用 WebSocket 等传输协议将其发送到信令服务器。要注意的是这些内容只是描述资料的样子,而不是资料本身。
SDP 通常包含以下内容:
SDP 使用 <type>=<value>
这样的格式,其中
<type>
和 <value>
是严格区分大小写的。=
之间不能有空格<type>
为单一小写字母,用意是不可随便扩充<value>
多个值可以用空白分隔范例如下:
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
[email protected] (Jane Doe)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
说明:
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
此会话由用户 jdoe 发起,位於 IPv4 地址 10.47.16.5。
s=SDP Seminar
会话的名字是 SDP Seminar
有两组 media stream
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
包含一个属性, 将 RTP/AVP payload type 99 mapping 为 h263
SDP 广泛应用在各种类似的技术如 SIP、RTP、RSP等等,在 WebRTC 为了实现影音即时通讯做了部分的修改,认识 SDP 後我们可以更好地理解 WebRTC 是如何运作的,未来发声连线失败或其他影音问题我们就可以来分析看看 SDP 应该会很有效!
<<: [Day04] Vue i18n - Pluralization
>>: 找LeetCode上简单的题目来撑过30天啦(DAY4)
前言 透明向来是敏捷强调的,Scrum 更是把透明列为三大支柱之一,今天想跟大家分享一下我对透明的看...
前言 对Reactor有一定的认识之後,接下来就要进入正题(迷:经过二十天才到正题?!),毕竟大部分...
图片来源:Azure 高负载 在Ecommerce的状态下我们最怕的便是在订单处理跟库存的部分(在...
以下笔记摘录自『 The Go Workshop 』。 前言 Go语言是强型别(strongly t...
在进入下一个NodeJS部份前想先讲一下Callback(回呼),这个概念不会占太大的篇幅,所以这篇...