Page 293 - Web性能权威指南
P. 293
pc.addstream(stream); ➍
pc.createOffer(function(offer) { ➎
pc.setLocalDescription(offer); ➏
signalingChannel.send(offer.sdp); ➐
});
}
function logError() { ... }
➊ 初始化共享的发信通道
➋ 初始化 RTCPeerConnection 对象
➌ 向浏览器请求音频流
➍ 通过 RTCPeerConnection 注册本地音频流
➎ 创建端到端连接的 SDP(提议)描述
➏ 以生成的 SDP 作为端到端连接的本地描述
➐ 通过发信通道向远端发送 SDP 提议
本书示例将使用不带前缀的 API,也就是 W3C 标准中定义的形式。实际
上,在所有浏览器都最终实现该标准之前,你需要根据自己的浏览器调整
示例代码。
WebRTC 使用 SDP(Session Description Protocol,会话描述协议)描述端到端连接
的参数。SDP 不包含媒体本身的任何信息,仅用于描述“会话状况”,表现为一系
列的连接属性:要交换的媒体类型(音频、视频及应用数据)、网络传输协议、使用
的编解码器及其设置、带宽及其他元数据。
在前面的例子中,通过 RTCPeerConnection 对象注册了本地音频流之后,我们调用
createOffer() 生成有关会话的 SDP 描述。生成的 SDP 包含什么信息?下面我们就
来看一看:
(……省略的内容……)
m=audio 1 RTP/SAVPF 111 ... ➊
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=candidate:1862263974 1 udp 2113937151 192.168.1.73 60834 typ host ... ➋
a=mid:audio
a=rtpmap:111 opus/48000/2 ➌
a=fmtp:111 minptime=10
(……省略的内容……)
➊ 带反馈的安全音频信息
➋ 媒体流的候选 IP、端口及协议
WebRTC | 283