您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

音视频系列:Webrtc音视频通话

时间:2022-06-16 11:48:45  来源:  作者:音视频流媒体技术

音视频通话难点:

音视频编解码原理

IP4中,设备在各自的内网,需要p2p打洞

音频降噪和回声消除

信令服务器:

设备连接的socket服务器

传递各个设备之间的信息:传递各个节点的sdp信息,传递ice信息

包含业务功能:如加入、离开房间等

打洞服务器:

为什么打洞?

IP4中,设备在各自的内网,各自的内网不能通信,而想要通信,就需要突破内网限制;

如果用服务器中转,则会加大服务器开销和增加延时;

若不用中转,就需要点对点(p2p)打洞,来实现通信;

NAT

网络地址转换

设备若想链接公网,需要经过路由转换,将私有IP转换为公网IP

在设备和路由中存在IP端口映射表NAPT

如:

设备A的某个应用私有IP端口为:192.168.1.10:9000;

设备A连接的路由器L的公网IP为:200.180.190.11;

那么在路由器L中会有一个端口映射设备A: 200.180.190.11:21111;

200.180.190.11:21111就是设备A的某个应用的公网IP地址和端口的映射;

SDP:

描述了客服端到服务端通信的各个网络地址及端口等信息;

ps:一段文本,就像一个列表,记录了客户端到服务端,中转次数及各个中转点的路由信息;

两个设备实现通信要求:

设备A、设备A的路由AL、设备B、设备B的路由BL;

设备A若想给设备B发消息,AL需要知道B在BL中的IP和端口映射;

同理,设备B若想给设备A发消息,BL需要知道A在AL中的IP和端口映射;

打洞流程:

角色:信令服务器、打洞服务器、设备A、设备A的路由AL、设备B、设备B的路由BL;

通过信令服务器(socket服务器)将设备A到打洞服务器的各个sdp发送给设备B;

通过信令服务器(socket服务器)将设备B到打洞服务器的各个sdp发送给设备A;

设备A尝试发送一条消息到设备B,这条消息是发送不过去的;因为BL里没有A和AL的映射IP和端口;

但是此时AL会在自己的NAPT表中记录B和BL的映射IP和端口;

设备B发送一条消息给设备A,这条消息时可以发送到的。因为AL的NAPT表中有B和BL的映射IP和端口;并且BL会在自己的NAPT表中记录A和AL的映射IP和端口;

此时A和B就可以直接互相发送消息了,不再需要服务器了;

音视频系列:Webrtc音视频通话

 

 

整个过程就是序号1->2->3->4->5->6->7->8>9

过程一:1->2

此过程为用户B向服务器请求向用户A打洞

过程二:3->4

此过程为服务器相应用户B的打洞请求,告诉用户A用户B想与你打洞(数据包中包含用户B的地址信息)。

过程三:5->6

用户A主动发一条信息给用户B,目的是为了使得路由器A中能够有一条关于路由B的IP的路由信息(注意不是用户B,用户B是私有IP),就如图所示,这条信息会被丢弃的,因为路由B的路由表中没有路由A的IP的信息。

过程四:7->8->9

用户B再发一条信息给用户A,因为此时路由A的路由表中有关于路由B的IP的路由信息,此时路由A就能路由给用户A了,至此,用户A就能直接收到用户B发的信息了。注意,此时用户A发给用户B不需要打洞,因为路由B中已经有关于路由A的IP的路由信息了。

 

webrtc业务流程:

音视频一对一通话、多对多会议都是基于房间进行;

角色:信令服务器S、打洞服务器T、设备A(被请求)、设备A的路由AL、设备B(主请求)、设备B的路由BL;

第一种情况

设备A进入房间时,没有其他设备;

设备A进入房间,信令服务器S给设备A返回设备A的唯一标识符socketId;

设备A开启本地预览:设置视频源、音频源、渲染到surface;

等待获取其他设备发送的请求offer...

准备sdp交换

设备A收到信令服务器S发送来的设备B的socketId和sdp;

设备A请求信令服务器,信令服务器返回设备A到打洞服务器的网络节点各个sdp

设备A设置本地sdp、设置收到的远端sdp;

设备A使用信令服务器S通过收到的socketId将自己的sdp发送给其他设备B;sdp交换完成

开始打洞:ICE交换

设备A通过异步消息获得打洞服务器返回的自己的ICE信息;

设备A通过信令服务器S将ICE信息发送给设备B;

等待设备B连接;

ICE交换完成后

获取远端设备B的视频流、音频流,进行解码播放;

第二种情况

设备B进入房间时,已有其他设备,如:设备A...;

此时设备B需要主动去呼叫设备A;

设备B连接信令服务器S;

设备B进入房间,信令服务器S给设备B返回设备B的唯一标识符socketId,和其他存在的设备的socketId列表;

设备B开启本地预览:设置视频源、音频源、渲染到surface;

开始sdp交换

设备B请求打洞服务器T,获取设备B到打洞服务器T的网络节点的各个sdp

设备B设置自己的sdp;

设备B使用信令服务器S通过socketId列表将自己的sdp发送给其他设备A;

设备A收到sdp后,设备A使用信令服务器S通过设备B的socketId,将自己的sdp发送给其他设备B;

设备B设置收到的远端sdp(可能有多个);sdp交换完成

开始打洞:ICE交换

设备A通过异步消息获得打洞服务器返回的自己的ICE信息;

设备A通过信令服务器S将ICE信息发送给设备B;

设备B根据收到的ICE信息去发送一个请求;此时设备B链接的路由器BL里就有了设备A在路由AL的IP和端口映射信息;ICE交换完成

设备B链接其他设备的视频流、音频流,进行解码播放;



Tags:Webrtc   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
WebRTC vs WebSocket?WebRTC + WebSocket?
WebRTC vs WebSocket1.什么是WebRTC?WebRTC 是一组 JavaScript API,可以在两个浏览器之间建立点对点连接, 实现音频和视频等数据的传输,也可以用它创建有语音/视频通话功能的应...【详细内容】
2023-01-04  Search: Webrtc  点击:(531)  评论:(0)  加入收藏
WEBRtc 实现视频会议
WebRTC(Web Real-Time Communication)是为了让开发者在浏览器实现多媒体交换的技术,于2011年被加入W3C规范。当前的支持情况可以见下图。 WebRTC的核心在于建立PeerConnection...【详细内容】
2022-11-11  Search: Webrtc  点击:(669)  评论:(0)  加入收藏
百万级高并发WebRTC流媒体服务器设计与开发
访问者模式:从介绍到实践百万级高并发WebRTC流媒体服务器设计与开发download:https://www.zxit666.com/1305/01什么是访客模式?访问者模式的定义如下,是指在不改变数据结构的情...【详细内容】
2022-10-07  Search: Webrtc  点击:(368)  评论:(0)  加入收藏
音视频系列:Webrtc音视频通话
音视频通话难点:音视频编解码原理IP4中,设备在各自的内网,需要p2p打洞音频降噪和回声消除信令服务器:设备连接的socket服务器传递各个设备之间的信息:传递各个节点的sdp信息,传递i...【详细内容】
2022-06-16  Search: Webrtc  点击:(441)  评论:(0)  加入收藏
WebRTC记录音视频流
监听开始事件 EventTarget.addEventListener() 方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行。 事件目标可以是一个文档上的...【详细内容】
2022-02-17  Search: Webrtc  点击:(247)  评论:(0)  加入收藏
Android WebRTC 对 AudioRecord 的使用
AudioRecord 是 Android 基于原始PCM音频数据录制的类,WebRCT 对其封装的代码位置位于 org/webrtc/audio/WebRtcAudioRecord.java,接下来我们学习一下 AudioRecord 是如何创建...【详细内容】
2022-01-13  Search: Webrtc  点击:(395)  评论:(0)  加入收藏
在音频通话中,如何将WebRTC音频通话升级为视频通话
我们有时候在音频通话过程中,想要改成视频通话。如果挂断当前的通话再重新发起视频通话就会显得比较麻烦。 因此很多app提供了将音频通话升级成视频通话的功能,同时也有将视频...【详细内容】
2021-12-23  Search: Webrtc  点击:(556)  评论:(0)  加入收藏
音视频流媒体开发WebRTC 基础知识 -- ICE 交互总结
【网络通信 -- WebRTC】WebRTC 基础知识 -- ICE 交互总结【1】ICE 的一般概念简介ICE 角色offer (主动发起)的一方为 controlling 角色answer (被动接受)的一方为 controlle...【详细内容】
2021-11-30  Search: Webrtc  点击:(440)  评论:(0)  加入收藏
IOS技术分享|WebRTC iOS源码下载&编译
前言最近对 WebRTC iOS 端源码进行了下载和编译,网上针对 WebRTC iOS 端的编译文章基本都是几年前的,有些地方已经不适用于最新版的 WebRTC 的编译,简单记录下载&编译的过程,以...【详细内容】
2021-11-10  Search: Webrtc  点击:(733)  评论:(0)  加入收藏
使用WebRTC和WebVR进行VR视频通话
Web平台上的WebRTC并不是其唯一的媒体API。WebVR说明书于几年前被引入来为浏览器中的虚拟现实设备提供支持。目前已经变为新的WebXR设备API说明书。今年夏天我在ClueCon,Dan...【详细内容】
2021-08-27  Search: Webrtc  点击:(403)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(9)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(8)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(13)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(12)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(54)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(51)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(67)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(164)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(68)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条