webrtc入门之sdp协议

本文介绍了WebRTC中的SDP协议,包括其背景、格式组成、会话描述和媒体描述信息。SDP用于协商音视频编解码能力和传输协议等。文章还讨论了Plan B与Unified Plan的区别,并提及了WebRTC中的一些扩展头信息,如传输时间偏移、音频级别和视频旋转等。

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

webrtc入门之sdp协议

 

目录

webrtc入门之sdp协议

背景

SDP格式组成

sdp是由多个 = 这样的表达式组成

webrtc中发布端示例分析

webrtc中订阅端示例分析

webrtc planb 和unifiedplan

webrtc中扩展头部分


背景:

视频行业在建立具体得数据传输之前,都会走一个控制信令,这个信令会协商交互彼此得音视频编解码能力,网络带宽和传输协议等信息,这个描述协议就是Session Description Protocol.协议详细内容在RFC4566中规定。本篇文章主要记录下我在学习webrtc中遇到sdp协商格式得一些笔记。

具体详细得sdp协议在webrtc中得应用 可参考https://www.ietf.org/archive/id/draft-nandakumar-rtcweb-sdp-08.txt

 

SDP格式组成

标准sdp规范里主要包括sdp描述格式和sdp结构,其中sdp结构里面最重要的2项内容是会话描述信息和媒体描述信息。

v=0
o=- 6973940625606599847 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS stream_label
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:Sq4a
a=ice-pwd:SZ5VkclYMTzGQVX91fFbYvbn
........

sdp是由多个<type> = <value>这样的表达式组成

1.会话级描述一般是从v=开始到第一个媒体描述行m=出现之前。

2.媒体描述信息主要是m=行到下一个m=出现之间,是对单个媒体流即音频流,视频流和字幕流的单个描述,如果有多个则会存在多个m行。

 

会话描述部分

1.v=

v就是protocol version,必选字段,表示了sdp的版本号,但是不包含子版本号,一般就是v=0.

2.o=

o是owner,必要字段,主要包含用户名,会话id,version,网络地址等信息

o=<username><session id><version><network type><address>

3.s=

s即seesion name,表示的会话名称,必选字段,在整个sdp里面只有一个会话名称,只存在一个这样的字段

4.t=

t=<start time><stop time> 表示会话的开始和结束时间,必选字段,持久会话,为0

媒体描述部分

1.m=

可选字段,代表具体的音频流或者视频流或者别的媒体流

m=<media type><port><transport><fmt list>

媒体类型 audio video

媒体端口 发流端口 或者收流端口

传输协议 表示码流的传输协议,例如;UDP/TLS/RTP/SAVPF 

媒体格式 :这里表示负载类型 一般表示的是视频的h264 h265 vp8 音频则是g7xx aac opus等类型

 

2.a=

a=<type>

a=<type>:<value>

rtmap属性

a=rtpmap:<payload type> <encoding name>/<clock rate>[/encoding paramters]

payload type 负载类型

encoding name 编码器名称

clock rate 采样率

encoding paramters 编码参数(视频就是分辨率 帧率,音频有单双声道等信息)

fmtp属性

a=fmtp:<payload type><format specific parameters>

payload type 负载类型

format specific parameters 具体的参数

 

webrtc中发布端示例分析

SFU模式下请求媒体服务的offer

v=0  //版本号

o=- 5045391719999432688 2 IN IP4 127.0.0.1  //o行 上面已解释过

s=-                               //忽略

t=0 0                             //持久会话 都填0

a=group:BUNDLE audio video   //共用一个传输通道传输的媒体,如果没有这一行,音视频,数据就会分别单独用一个udp端口来发送

a=msid-semantic: WMS stream_label //WMS是WebRTC Media Stream简称,这一行定义了本客户端支持同时传输多个流,一个流可以包括多个track。出现此行 后面a=ssrc这一行就会有msid,mslabel等属性
会话描述

/音频媒体描述/

//说明本会话包含音频,9代表音频使用端口9来传输,但是在webrtc中一现在一般不使用,如果设置为0,代表不传输音频,UDP/TLS/RTP/SAVPF是表示用户来传输音频支持的协 议,udp,tls,rtp代表使用udp来传输rtp包,并使用tls加密,SAVPF代表使用srtcp的反馈机制来控制通信过程,111表示音频支持的编码。

m=audio 9 UDP/T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值