SDP结构要先熟悉一下
SDP type=value的格式而且对大小敏感,会话级别是从v=开始的,字段必须是(REQUIRED)有的字段是可选字段 。这样可以增加错误检测能力。下面给具体说一下。a字段是可以进行扩展的
# 1. 会话级别的描述(及其字段)
v= (protocol version)
o= (originator and session identifier)
s= (session name)
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information -- not required if included in all media)
b=* (zero or more bandwidth information lines)
# 2. 一个或多个时间描述(字段参见下文)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
# 3. 零个或多个媒体级别的描述(字段参见下文)
# 时间描述的字段有这些
t= (time the session is active)
r=* (zero or more repeat times)
# 媒体级别的描述字段有这些
m= (media name and transport address)
i=* (media title)
c=* (connection information -- optional if included at session level)
b=* (zero or more bandwidth information lines)
k=* (encryption key)
a=* (zero or more media attribute lines)
下面一段是在webrtc交互中进行打印的一段
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.57.56.511
s=SDP Seminar
i=A Seminar on the session description protocol
u=
e=j.doe@example.com (Jane Doe)
c=IN IP4 234.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
SDP交换需要一台自己的信令服务器来做交换
- 我是在websocket中的实现的信令的,因为websocket可以做到双向的。
- websocket可以方便的发送消息给客户端。当然还有很多其他可以做为信令服务器的。
交换过程大致说一下
- webrtc创建 createOffer->offerSdp->setLocalDes->信令服务器->客户端(createAnswer)->setLocalDes->anserSdp->信令服务器->发送者(setRemoteDescription)->doSomething