WebRTC的基本概念

● 简介
WebRTC是一门实时通讯技术,它允许它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览 器之间点对点的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。
● WebRTC用到的协议
ICE:是一个允许你的浏览器和对端浏览器建立连接的协议框架。该技术能过让客户端成功的穿透,远程用户和网络之间存在的各类防火墙(网络协商)
STUN:NAT的UDP简单的网络协议,它允许位于NAT后的客户端找出自己的公网地址,查出自己位于那种类型的NAT之后,以及NAT为某一个本地端口绑定的Internet端端口。这些信息用来在两个同时处于在NAT路由后的主机之间进行通信。
请添加图片描述

获得了公网ip,也不一定能建立连接,因为不同类型的NAT处理传入的udp分组的方式是不同的。STUN穿透:完全圆锥型NAT,受限圆锥型NAT和端口受限圆锥型NAT。但是大型公司中经常采用的对称型NAT是不能使用的,一些路由器严格地限定了部分私网设备的对外连接。这种情况下,即使 STUN 服务器识别了该私网设备的公网 IP 和端口的映射,依然无法和这个私网设备建立连接。这种情况下就需要转向 TURN 协议。

网络协商:
双方需要了解对方的网络情况,这样才会找到一条能够彼此通信的链路。
(1)获取外网的IP地址映射 (2)通过信令服务器进行网络的交换
理想情况下每个电脑的浏览器都有自己私有的公网IP,可以进行点对点的连接

请添加图片描述
实际情况下,电脑和电脑之间或大或小只在某一个局域网中,需要NAT进行地址转换请添加图片描述

局域网ip绑定,
请添加图片描述
请添加图片描述

STUN:告诉我你公网ip地址+端口号是什么。搭建STUN服务器很简单,流媒体传输是按照P2P的方式。

问题:STUN并不是每次都能够成功的为需要的NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用本地带宽,在多人音视频通话的过程中,通话质量好坏往往需要根据使用者本地带宽确定

TURN:TURN是STUN/RFC5389的一个扩展,主要添加了Relay功能。如果终端在NAT之后,那么特定的情况下有可能使得终端无法和对等端进行直接通信,这个时候就需要公网服务器作为一个中继,对来往的数据进行转发。转发的协议被定义为TURN。
请添加图片描述
STUN在分配公网ip失败后,可以通过TURN服务器请求公网的ip地址作为中继地址。这种方式的带宽由服务器承担,在多人视频聊天的时候,本地带宽压力较小。
请添加图片描述

媒体协商:
SDP:会话描述协议是一个描述多媒体连接内容的协议。(媒体协商)
请添加图片描述

A端音视频采用vp8编码发送给B端,B端怎么去解码。
B端采用vp9编码,发送给A端,A端怎么去解码。
比如:A端可以采用vp8和H264编码,B端采用VP9和H264编码,为了确保两端都能正确的解码。最简单的就是采用H264编码。
注:SDP在webrtc中,可以描述上面的信息。在音视频通讯的时候,双方需要交换SDP。

媒体协商+网络协商数据的交换通道
两个客户端交换媒体信息和网络信息,通过信令服务器来实现。

请添加图片描述

信令服务器除了交换网络协商信息和媒体协议信息,比如房间的管理,音视频播放的音乐信息,进度条信息等都需要通过信令服务器实现。

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WebRTC(Web实时通信)是一个开源项目,用于实现浏览器之间的实时通信。它提供了一系列的API,可以在Web浏览器中实现音频、视频和数据的共享。我们可以通过CSDN网站找到WebRTC的源代码。 在CSDN网站上,可以通过搜索引擎或直接访问相关的代码仓库,例如GitHub,来获取WebRTC的源代码。在代码仓库中,我们可以找到所有的源代码文件和相关的文档,以便我们深入了解和研究WebRTC的实现。 WebRTC的源代码主要由C++和JavaScript编写。C++部分包含了底层音视频处理的功能,例如编码和解码、网络传输和流媒体处理等。JavaScript部分则负责在浏览器中调用和使用WebRTC的API,并处理与用户界面的交互。 WebRTC的源代码非常庞大且涉及复杂的技术,包括音视频编解码、网络传输、数据通信等。因此,理解和使用WebRTC的源代码需要具备一定的编程和网络知识。 通过研究WebRTC的源代码,我们可以深入了解实时通信技术的内部机制,并根据实际需求进行定制和优化。同时,我们也可以利用WebRTC的源代码作为学习和参考,开发自己的实时通信应用程序。 总之,通过在CSDN上获取WebRTC的源代码,我们可以深入了解WebRTC的实现,并利用它构建强大的实时通信应用程序。但是,请注意,理解和使用WebRTC的源代码需要一定的学习和实践。 ### 回答2: WebRTC是一个开源项目,用于实现浏览器之间的实时音视频通信。该项目的源码可以在GitHub上找到,并且在CSDN社区也有相关的文章和教程。 在CSDN上搜索"Webrtc源码"可以找到很多相关的资源。这些资源包括了Webrtc基本概念解释、架构设计、源码解析以及开发应用的示例等内容。通过阅读这些文章,可以了解Webrtc的整体架构、通信流程以及关键模块的工作原理。 在学习Webrtc源码的过程中,建议先理解WebRTC基本概念和术语,如信令服务器、ICE协议、SDP等。然后,可以重点关注核心模块,如音视频采集、媒体传输、音视频编解码等。此外,还可以深入研究网络传输协议、媒体处理等相关技术。 CSDN上的相关文章和教程能够提供对Webrtc的源码解析和开发指导,同时也是讨论和交流的平台。在学习过程中,可以参考这些文章,并结合源码进行实际的操作和实践。 总而言之,Webrtc源码可以通过CSDN找到相关资源,并通过阅读相应的文章和教程对源码进行理解和学习,借助这些资源和社区的支持,我们可以更好地掌握Webrtc的实现原理和开发应用。 ### 回答3: WebRTC(Web实时通信)是一个开放源代码项目,旨在提供实时音视频通信的能力。关于WebRTC的源码,可以在CSDN等技术社区找到相关资源。 在CSDN上,可以找到很多关于WebRTC源码的学习资料和教程。首先,可以通过搜索关键词“WebRTC源码”来获取一些源码解析文章,这些文章会帮助我们深入了解WebRTC的实现原理和基本架构。 此外,CSDN上也有一些专门讨论WebRTC的论坛和社区,这些社区中的会员可以分享彼此的学习经验、提供问题解答等。在这些社区中,我们可以找到许多WebRTC开发者和爱好者,他们可以提供有关源码的深入分析和讨论。 在CSDN还可以找到一些WebRTC相关的开源项目,例如一些基于WebRTC的音频、视频通信的实现。这些开源项目往往提供了完整的源代码和文档,可以作为参考和学习的资料。 总之,CSDN是一个很好的资源平台,提供了关于WebRTC源码的丰富信息。通过CSDN,我们可以找到相关的源码解析文章、讨论社区和开源项目,这些资源都能帮助我们更好地理解和学习WebRTC的源码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值