概述
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媒体协商及实践所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复