webrtc初步了解


本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感兴趣的读者,可以点击观看课程网址:零声教育


WebRTC搭建点对点实时音视频对话,起始需要保证完成两点:
1.媒体协商,了解彼此支持的媒体格式。参与视频通讯的双方必须先交换SDP信息,交换SDP的过程。
2.网络协商,了解彼此的网络环境,找到一条相互通讯的链路。
(1)获取外网IP地址映射;(2)通过信令服务器交换“网络信息”

网络术语:
媒体协商 sdp 了解彼此的编解码能力(支持的媒体格式)
网络协商 candidate 了解彼此的外网端口映射

实际网络环境中,双方都在不同的局域网内,不能直接点对点连接。需要利用协议来解决该问题。

WebRTC常用协议

STUN
STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT路由器之后的主机之间创建UDP通信。该协议由RFC 5389定义。
作用:告知公网IP地址+端口
存在问题:STUN并不是每次都能成功的为需要NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用的本地带宽,在多人视频通话的过程中,通话质量的好坏往往需要根据使用者本地的带宽确定

TURN
TURN的全称为Traversal Using Relays around NAT,是STUN/RFC5389的一个拓展,主要添加了Relay功能
如果终端在NAT之后,那么在特定的情景下,有可能使得终端无法和其对等端(peer)进行直接的通信,这时就需要公网的服务器作为一个中继,对来往的数据进行转发。

信令服务器

2个客户端协商媒体信息和网络信息,需要信令服务器来转发彼此的媒体信息(sdp)和网络信息(candidate )。

WebRTC APIs

  1. MediaStream —  MediaStream用来表示一个媒体数据流(通过getUserMedia接口获取),允许你访问输入设备,如麦克风和 Web摄像机,该 API 允许从其中任意一个获取媒体流。
  2. RTCPeerConnection — RTCPeerConnection 对象允许用户在两个浏览器之间直接通讯 ,你可以通过网络将捕获的音频和视频流实时发送到另一个 WebRTC 端点。使用这些 Api,你可以在本地机器和远程对等点之间创建连接。它提供了连接到远程对等点、维护和监视连接以及在不再需要连接时关闭连接的方法

一对一通话

时序图如下:
在这里插入图片描述
通话流程:
1.发起者(A端)和接收者(B端)都先连接到信令服务器(Signal Server)。
2.两端都创建PeerConnection,该对象允许用户在两个浏览器之间直接通讯。添加本地媒体数据流。
3.A端回调CreaterOffer函数从浏览器中获取SDP,利用SetLocalDescription函数设置到本地PeerConnection中。
4.A端先将SDP发送给信令服务器,信令服务器转发给B端。
5.B端利用SetRomoteDescription将接受到的SDP设置到自己的PeerConnection中。并产生SDP。
6.B端回调CreaterAnswer函数获取SDP,利用SetLocalDescription函数设置到本地PeerConnection中。
7.B端先将SDP发送给信令服务器,信令服务器转发给A端。完成媒体协商
8.A端 ICE(STUN+TURN集成协议),请求公网信息。STUN服务器回发Candidate(在PeerConnection内部完成)。
9.A端通过信令服务器转发ICE Candidate给B端。
10.B端调用Add ICE Candidate加到 PeerConnection,了解A端外网端口映射。
11.B端做类似A端8、9做法。
12.A端调用Add ICE Candidate加到 PeerConnection,了解B端外网端口映射。 完成网络协商
13.A、B两端的所有PeerConnection交叉尝试链接,联通后,完成P2P。
小结:
在一对一通话场景中,每个 Peer均创建有一个 PeerConnection 对象,由一方发送 Offer SDP,另一方应答AnswerSDP,最后双方交换 ICE Candidate 从而完成通话链路的建立。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

君莫笑lucky

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

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

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

打赏作者

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

抵扣说明:

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

余额充值