WebRTC的技术原理和使用浅析

一、基本介绍

WebRTC即网页即时通信,是一个支持网页浏览器进行音视频对很多 技术方案。

二、技术特征

1.实时通讯:

WebRTc是一项实时通讯技术,允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点的连接,实现视频流或音频流或者其他任意数据的传输。

2.无依赖、插件:

WebRTC包含的这些标准使用户在无需安装任何插件或者第三方软件的情况下,创建点对点的数据分享和音视频数据传输成为可能。

3.协议栈众多

WebRTC并不是单一的协议,包含了媒体、加密、传输层等在内多个协议标准以及一套基于JavaScript的API,包含类音视频的采集、编解码、网络传输、显示等功能。通过简单易用的 JavaScript API ,在不安装任何插件的情况下,让浏览器拥有了 P2P音视频和数据分享的能力。

相关协议介绍与作用        
ICE/STUN/TURN                       用于内网穿透,解决了获取与绑定公网映射地址
DTLS用于对传输内容进行加密
SRTP/SRTCP        对媒体数据的封装与传输控制协议

三、技术原理

技术特征:

1.SRTP:安全的实时传输协议,用于音视频流传输

2.Multiplexing:多路复用

3.P2P:STUN+TURN+ICE 用于NAT网络和防火墙穿越。

4.DTLS:用于加密传输和密钥协商。

5.UDP:整个WebRTC通信是基于UDP的。

明确网络定位:

获取连接对象的网络地址方式,是借助于ICE、STUN、TURN等辅助内网穿透技术(NAT)得到对应主机的公网网络地址和端口等网络定位信息。明确网络定位是建立端与端直接通讯的基础。

信令服务器:

信令服务器的作用是基于双工通信来中转信息,中转信息包含公网ip映射后的网络定位信息,比如公网IP、端口、媒体数据流等。

信令服务器信息交互过程图:

 会话描述协议SDP:

1)不同端/浏览器对于媒体流数据的编码格式各异,如VP8、VP9等,参与会话的各个成员的能力不对等、用户环境与配置不一致等;

2)WebRTC通讯还需要确定和交换本地和远程音频和视频媒体信息,例如分辨率和编解码器功能。交换媒体配置信息的信令通过使用会话描述协议 (SDP) 交换Offer和Anwser来进行;

3)SDP的交换一定是先于音视频流交换的。其内容包括会话基本信息、媒体信息描述等。

一对一连接建立过程 

 

如上图所示,解释一下:
 

1)交换SDP,获取各自媒体配置信息;

2)STUN服务器交换网络地址和端口等网络信息;

3)Turn中转音视频媒体流数据。

工作流程图:

 

如上图所示,解释一下:
1)A和B双方先调用 getUserMedia 打开本地摄像头,作为本地待输出媒体流;

2)向信令服务器发送加入房间请求;

3)Peer B 接收到 Peer A 发送的 offer SDP 对象,并通过PeerConnection的SetLocalDescription方法保存 Answer SDP 对象并将它通过信令服务器发送给 Peer A;

4)在 SDP 信息的 offer/answer 流程中,Peer A 和 Peer B 已经根据 SDP 信息创建好相应的音频 Channel 和视频 Channel,并开启Candidate 数据的收集,Candidate数据(本地IP地址、公网IP地址、Relay服务端分配的地址);

5)当 Peer A 收集到 Candidate 信息后通过信令服务器发送给 Peer B。同样的过程 Peer B 对 Peer A 也会再发送一次。

四、小结

优点:方便、免费、强大的打洞能力:WebRTC技术包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透技术,并支持代理。

缺点:缺乏服务器方案的设计和部署、传输质量难以保证,WebRTC的传输设计基于P2P,难以保障传输质量、WebRTC比较适合一对一的单聊、设备端适配,如回声、录音失败等问题层出不穷、对Native开发支持不够。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ANS (Adaptive Noise Suppression) 是 WebRTC 中的音频模块之一,用于降噪。它基于维纳滤波原理来实现降噪功能。维纳滤波是一种经典的信号处理方法,通过对输入信号进行加权平均,以减少噪声的影响。 在 ANS 中,维纳滤波器的系数是根据上一帧的带噪语音和估计的干净语音来计算的。先验 SNR (Signal-to-Noise Ratio) 是用来衡量信号与噪声之间的比例关系,通过先验 SNR 的计算,可以对当前帧的噪声进行估计和抑制。 ANS 支持多种采样率,其中最常用的是 16k HZ。在语音信号处理中,一帧通常为 10 毫秒,对应 160 个采样点。处理过程中,信号会从时域转换到频域进行处理,然后再从频域转换回时域。这两个转换过程是对称的,与降噪算法无关。 以上是关于 WebRTC ANS 的基本原理和一些细节的介绍。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [webRTC中语音降噪模块ANS细节详解(一)](https://blog.csdn.net/david_tym/article/details/120576289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [webRTC中语音降噪模块ANS细节详解(三)](https://blog.csdn.net/david_tym/article/details/121040570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [webRTC中语音降噪模块ANS细节详解(二)](https://blog.csdn.net/david_tym/article/details/120817304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qinxun2008081

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值