WebRTC媒体协商及实践

本文详细介绍了WebRTC的处理流程,包括WebRTC终端、Signal服务器、STUN/TURN服务器的角色。讨论了帧率、编码帧类型、SDP会话描述协议以及媒体协商的重要性。还涉及到NAT穿越的四种类型及其挑战,并展示了WebRTC关键代码实现,如设备检测、摄像头启动、滤镜应用、视频录制与播放以及桌面共享。
摘要由CSDN通过智能技术生成

WebRTC 处理流程图:

在这里插入图片描述

WebRTC 终端,负责音视频采集、编码、NAT穿越、音视频数据传输。

Signal服务器,负责信令处理,如加入房间、离开房间、媒体协商消息的传递。

STUN/TURN 服务器,负责获取WebRTC终端在公网的IP地址,以及NAT穿越失败后的数据中转。

主要基础概念

帧率:摄像头一秒钟采集图像的次数;一般情况下,一秒可采集30张-100张图片。帧率越高,视频越平滑,占用带宽越大。

编码帧:视频数据流通过编码器(H264/H265\VP8/VP9)压缩后的帧。

​ I 帧:关键帧。压缩率低,可以单独解码成一幅完整的图像。

​ P帧:参考帧。压缩率较高,解码时依赖于前面已解码的数据。

​ B帧:前后参考帧。压缩率最高,解码时依赖于前后已解码的帧,B帧后面的P帧要优先进行解码。

非编码帧:音视频设备拍摄的未经过编码的原视频帧。编码格式一般为YUV、RBG格式。

MediaTrack:媒体轨,可理解类似火车道的两条铁轨,每条轨数据是独立的,不会与其他轨相交;
MediaStream:媒体流,音视频数据流,可存放0个或者多个音频轨或者视频轨。

MediaDevices:该接口提供了访问(连接到计算机上)媒体设备(如摄像头、麦克风)以及截取屏幕的方法。MediaDeviceInfo: 表示每个输入/输出的设备信息:deviceId(设备唯一标识),label(设备名称),kind(设备种类,音频设备还是视频设备)。除非用户已授权访问媒体的权限(HTTPS请求),否则label字段始终为空。

SDP: Session Description Protocal 会话描述协议,用文本描述各终端(PC\Android\IOS)所支持的音频编解码器、设定的参数、使用的传输协议及音视频媒体等。其包括会话描述、媒体描述。

​ 会话描述(v-m):SDP版本号、用户名(不关心可用 - 代替)、会话唯一标识(NTP时间戳)、版本号(每次会话数据修改,其值会递增),网络类型、IP类型、ip 地址 。

​ 媒体描述:媒体类型、媒体格式、传输协议、传输的IP和端口。

WebRTC 中的SDP:

​ Session Metadata 会话元数据

​ Network Description 网络描述

​ Stream Description 流描述

​ Security Description 安全描述

​ Qos Grouping Descriptions,服务质量描述

//=============会话描述====================
v=0 
o=- 7017624586836067756 2 IN IP4 127.0.0.1
s=-
t=0 0
...

//================媒体描述=================
//================音频媒体=================
/*
 * 音频使用端口1024收发数据
 * UDP/TLS/RTP/SAVPF 表示使用 dtls/srtp 协议对数据加密传输
 * 111、103 ... 表示本会话音频数据的 Payload Type
 */
 m=audio 1024 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126 

//==============网络描述==================
//指明接收或者发送音频使用的IP地址,由于WebRTC使用ICE传输,这个被忽略。
c=IN IP4 0.0.0.0
//用来设置rtcp地址和端口,WebRTC不使用
a=rtcp:9 IN IP4 0.0.0.0
...

//==============音频安全描述================
//ICE协商过程中的安全验证信息
a=ice-ufrag:khLS
a=ice-pwd:cxLzteJaJBou3DspNaPsJ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值