SDP全称是Session Description Protocol,即会话描述协议,用于会话各方间的媒体协商。html
<type>=<value>
。看一下SDP具体是怎样的,复制如下代码到控制台 Enter
~web
const PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; const peer = new PeerConnection(); navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then(stream => { stream.getTracks().forEach(track => { peer.addTrack(track, stream); }); peer.createOffer().then(e => { console.log(e.sdp); }) }) .catch(e => alert('没法获取摄像头信息'));
v=0
SDP的版本(Protocol version number)。当前规范版本为0安全
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
会话全部者有关的参数(Owner/creator and session identifier)。网络
s=<session name>
本次会话的标题或会话的名称(Session name)。session
t=<start-time> <stop-time>
会话的起始时间和结束时间(Time session starts and stops)。tcp
m=<media> <port>/<number of ports> <proto> <fmt> ...
媒体行,描述了发送方所支持的媒体类型等信息(Media information)。ide
<proto> 流传输协议。举例说明:编码
最后的 SAVPF 还有其余几种值:AVP, SAVP, AVPF, SAVPF。加密
c=<nettype> <addrtype> <connection-address>
媒体的链接信息(Connection information)。每一个媒体描述中至少包含一个 c =
字段,或者在会话描述中包含一个 c =
字段。.net
a=<attribute> | <attribute>:<value>
属性(attribute)是扩展SDP的主要手段,分为会话级
属性和媒体级
属性:
会话级属性:添加在第一个媒体描述以前,传达的信息适用于整个会议而不是单个媒体。
a=group:BUNDLE audio video
经过mid标识符把多个媒体属性链接起来;a=msid-semantic: WMS ma
表示是webrtc媒体流(Webrtc Media Streams);媒体级属性:媒体描述中添加有关媒体流的信息。
a=mid:audio
上述BUNDLE中用到的媒体标识;a=msid:ma ta
链接不一样的媒体描述,使用相同的MediaStreams;a=sendonly
表示媒体发送端,其余类型:recvonly,sendrecv,inactive;a=rtcp:9 IN IP4 0.0.0.0
用来传输rtcp地地址和端口;a=rtcp-mux
表示rtp,rtcp包使用同一个端口来传输;a=ice-xxx:xxx
ice协商过程当中的安全验证信息;a=fingerprint:xxx
表示dtls协商过程当中须要的认证信息;a=setup:actpass
表示本客户端在dtls协商过程当中,能够作客户端也能够作服务端;a=rtpmap:111 opus/48000/2
负载类型111,编码格式opus,48000是时钟,2是通道数;a=rtcp-fb:111 nack
支持丢包重传;a=rtcp-fb:111 nack pli
支持关键帧丢包重传;a=rtcp-fb:111 transport-cc
表示opus编码支持使用rtcp来控制拥塞;a=fmtp:111 minptime=10;useinbandfec=1;maxplaybackrate=16000
对opus编码可选的补充说明,minptime表明最小打包时长是10ms,useinbandfec=1表明使用opus编码内置fec特性;a=ssrc:1370113029 cname:NMediaAudio
cname用来标识一个数据源,ssrc当发生冲突时可能会发生变化,可是cname不会发生变化,也会出如今rtcp包中SDEC中,用于音视频同步;a=candidate:1 1 udp 2013266431 x.x.x.x 43342 typ host generation 0
表示候选人的传输地址,查看详情。