WebRTC SDP 解析

SDP是WebRTC中的信令协议,用于协商会话控制、错误处理和元数据。本文详细解释了SDP的组成部分,包括音频和视频的描述字段,例如媒体类型、编码、传输协议等,以及信令交换的过程。了解SDP对于理解WebRTC通信至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SDP

sdp(Session Description Protocol)是一种会话描述协议,属于文本协议,即WebRTC中常说的信令(Signalling),是WebRTC用来协助建立p2p通讯的。主要用于协商双方通讯过程,传递基本信息,如:会话控制信息,用来开始和结束通话,即开始视频、结束视频这些操作指令;处理错误的消息;元数据,如各自的音视频解码方式、带宽;网络数据,对方的公网IP、端口、内网IP及端口。但是WebRTC的API并没有实现信令通信机制,所以使用者需要自己去实现。常见的信令交互图如下:

一旦信令服务建立好了,两个Peer之间建立了连接,理论上他们就可以进行点对点通讯了。

信令的交换过程如下图:

上图中Amy和Bob代表两个Peer,Amy发起会话邀请,首先会创建一个PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中。

Amy调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数。Amy通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给Bob。

Bob接收到Amy发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个应答的SDP对象,通过PeerConnection的SetLocalDescription的方法保存该应答SDP对象并将它通过Signal服务器发送给Amy。

Amy接收到Bob发送过来的应答SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来。这样双方就建立好了通信通道,彼此可以发送媒体数据了。

 

以下是一个实际使用的SDP内容,即各个字段解析:

v=0

//sdp的版本号,目前为0

o=- 4024479478678337639 2 IN IP4 127.0.0.1

//格式:o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

//username没有用-表示,sess-id为会话id,本处为4024479478678337639 sess-version为会话版本,本处为2,后面依次为

//TCP通信/IP4协议/本地ip

s=-

//会话名字,没有用-

t=0 0

//</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值