我是靠谱客的博主 喜悦山水,最近开发中收集的这篇文章主要介绍WebRTC媒体协商及实践,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

WebRTC 处理流程图:

在这里插入图片描述

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

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

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

主要基础概念

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

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

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

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

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

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

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

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

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

​ 会话描述(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-pw

最后

以上就是喜悦山水为你收集整理的WebRTC媒体协商及实践的全部内容,希望文章能够帮你解决WebRTC媒体协商及实践所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部