WebRTC,源自网页实时通信(Web Real-Time Communication)缩写,它是支持网页浏览器进行实时语音对话或视频对话的技术。它为我们提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,
概述
它在2011年5月开放了工程的源代码,在行业内得到了广泛的支持和应用,成为下一代视频通话的标准。
WebRTC的音视频通信是基于P2P,那么什么是P2P呢?
它是点对点连接的英文缩写。
P2P连接模式
一般我们传统的连接方式,都是以服务器为中介的模式:
类似http协议:客户端?服务端(当然这里服务端返回的箭头仅仅代表返回请求数据)。
我们在进行即时通讯时,进行文字、图片、录音等传输的时候:客户端A?服务器?客户端B。
而点对点的连接恰恰数据通道一旦形成,中间是不经过服务端的,数据直接从一个客户端流向另一个客户端:
客户端A?客户端B ... 客户端A?客户端C ...(可以无数个客户端之间互联)
这里可以想想音视频通话的应用场景,我们服务端确实是没必要去获取两者通信的数据,而且这样做有一个最大的一个优点就是,大大的减轻了服务端的压力。
而WebRTC就是这样一个基于P2P的音视频通信技术。
WebRTC的服务器与信令
讲到这里,可能大家觉得WebRTC就不需要服务端了么?这是显然是错误的认识,严格来说它仅仅是不需要服务端来进行数据中转而已。
WebRTC提供了浏览器到浏览器(点对点)之间的通信,但并不意味着WebRTC不需要服务器。暂且不说基于服务器的一些扩展业务,WebRTC至少有两件事必须要用到服务器:
- 浏览器之间交换建立通信的元数据(信令)必须通过服务器。
- 为了穿越NAT和防火墙。
第1条很好理解,我们在A和B需要建立P2P连接的时候,至少要服务器来协调,来控制连接开始建立。而连接断开的时候,也需要服务器来告知另一端P2P连接已断开。这些我们用来控制连接的状态的数据称之为信令,而这个与服务端连接的通道,对于WebRTC而言就是信令通道。
WebRTC的NAT/防火墙穿越技术
基于上述的一个思路来实现的:
建立点对点信道的一个常见问题,就是NAT穿越技术。在处于使用了NAT设备的私有TCP/IP网络中的主机之间需要建立连接时需要使用NAT穿越技术。以往在VoIP领域经常会遇到这个问题。目前已经有很多NAT穿越技术,但没有一项是完美的,因为NAT的行为是非标准化的。这些技术中大多使用了一个公共服务器,这个服务使用了一个从全球任何地方都能访问得到的IP地址。在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越
这里提到了ICE协议框架,它大约是由以下几个技术和协议组成的:STUN、NAT、TURN、SDP,这些协议技术,帮助ICE共同实现了NAT/防火墙穿越。
以上就是详解IOS WebRTC的实现原理的详细内容,更多关于IOS WebRTC的实现原理的资料请关注编程学习网其它相关文章!
本文标题为:详解IOS WebRTC的实现原理
- Android studio实现动态背景页面 2023-05-23
- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android实现监听音量的变化 2023-03-30
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- iOS 对当前webView进行截屏的方法 2023-03-01
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- Flutter实现底部和顶部导航栏 2022-08-31
