WebRTC音视频-前言介绍

目录

效果预期

1:WebRTC相关简介

1.1:WebRTC和RTC

1.2:WebRTC前景和应用

2:WebRTC通话原理

2.1:媒体协商

2.2:网络协商

2.3:信令服务器


效果预期

1:WebRTC相关简介

1.1:WebRTC和RTC

        WebRTC(Web Real-Time Communication)是一项开放标准的实时通讯技术,旨在通过浏览器和移动应用程序直接进行音频、视频和数据传输,而无需借助插件或其他第三方软件。

        RTC是一个更广泛的概念,涵盖了各种实时通信技术和协议,RTC是Real-Time Communication(实时通信)的缩写。它是一种技术和协议集合,用于在用户之间传输数据和媒体,实现实时的音频、视频和数据通信。

        WebRTC 则是 Google 基于 RTC 协议实现的一个开源项目,WebRTC是一个免费的开放项目,它通过简单的API为浏览器和移动应用程序提供实 时通信(RTC)功能。

RTC 有一个非常重要的特性,它是一个支持点对点直接传输的 P2P 协议;P2P在下面会介绍

webrtc官网   https://webrtc.org

1.2:WebRTC前景和应用

WebRTC(Web Real-Time Communication)的确以“web”命名,但其设计并不受限于传统的互联网浏览器环境。实际上,无论终端运行环境是浏览器、桌面应用、移动设备(如Android或iOS)还是IoT设备,只要满足IP连接可达和符合WebRTC规范的条件,这些设备都可以进行互通。

这一特性极大地扩展了WebRTC的应用范围,释放了大量智能终端以及运行在这些终端上的应用程序的实时通信能力。以下是WebRTC适用的主要应用领域:

  1. 在线教育: 教育机构可以利用WebRTC实现远程教学和学习,包括实时的视频和音频教学内容传输,互动问答和屏幕共享等功能。

  2. 视频会议: 企业和团队可以通过WebRTC搭建高效的视频会议系统,实现多方实时视频通话、协作编辑和虚拟会议室等功能,提升远程工作的效率。

  3. 视频社交: 社交平台和应用可以利用WebRTC提供实时视频聊天和直播功能,增强用户之间的互动和社交体验。

  4. 远程协助和支持: 客户服务和技术支持可以通过WebRTC提供远程协助和问题解决,包括远程控制、共享文档和实时注释等。

  5. 远程操控: IoT设备和工业控制系统可以通过WebRTC实现远程监控和操控,包括设备状态的实时显示和远程操作指令的传输。

综上,WebRTC的跨平台和广泛适用性使其在实时交互性要求较高的各种应用场景中都有广泛的应用前景。通过其开放的标准和协议,WebRTC不仅促进了多种设备和应用之间的互通,还为创新的实时通信应用提供了丰富的技术支持

2:WebRTC通话原理

        假如在保证两个可以正常联网 且(具备摄像头/麦克风多媒体设备的)正常的两个浏览器,如何实现互通呢?

主要分为两个部分,第一个部分 是媒体协商 ,另一个是网络协商 

2.1:媒体协商

        例如:当两个对象 A和B存在多种编码格式,例如上面图示,当A邀请B时,A会将自己的能力传递给B,然后B得到A的能力后,选择与A共有的能力,比如H264视频编码能力,然后传递给A,表示你的能力中,我符合H264,然后A得到信息后,便会也采用H264这个能力与B进行交互,这个过程就是媒体协商,这个只是一个示例,当然不止这个视频编码能力的协商交互,还包括音频能力、自己的媒体信息等其他信息交互。

        这个过程则是使用专门的协议,称为Session Description Protocol (SDP),在WebRTC中,参 与视频通讯的双方必须先交换SDP信息,这样双方才能知道对方的能力是什么,而交换SDP的过程,也称为"媒体协商"

WebRtC中媒体协商,主要是指SDP交换。又比如WebRTC建立中的信令媒体协商逻辑大概如下:

  • 发起端创建 Offer

    • Amy(发起端)通过创建一个 SDP(Session Description Protocol)Offer 来描述她的本地媒体能力和网络信息。
    • Amy 调用 setLocalDescription 方法将这个 Offer 设置为本地描述,并将其保存起来。
  • Offer 通过信令服务器传送给接收端

    • Amy 将她的 Offer 信息通过信令服务器发送给接收端 Bob。
  • 接收端处理 Offer

    • Bob(接收端)收到来自 Amy 的 Offer 信息后,通过调用 setRemoteDescription 方法将这个 Offer 设置为远端描述,保存起来。
  • 接收端创建 Answer

    • Bob 基于收到的 Offer 信息,创建一个 SDP Answer 来描述他的本地媒体能力和网络信息。
    • Bob 调用 setLocalDescription 方法将这个 Answer 设置为本地描述,并将其保存起来。
  • Answer 通过信令服务器传送给呼叫端

    • Bob 将他的 Answer 信息通过信令服务器发送回给呼叫端 Amy。
  • 呼叫端处理 Answer

    • Amy 收到来自 Bob 的 Answer 信息后,通过调用 setRemoteDescription 方法将这个 Answer 设置为远端描述,保存起来。

其中:setLocalDescription、setRemoteDescription 都是WebRTC都是接口API.

而什么又是Offer、Answer呢?

在双方要建立点对点通信时,发起端发送的 SDP 消息称为 Offer,接收端发送的 SDP 消息称为 Answer

所以,offer 和 answer 本质就是存有 SDP 信息的对象,所以也会叫做 SDP Offer 和 SDP Answer。

简单的理解:WebRTC 的信令协商过程就像人们在交换名片一样。每个人都准备了自己的名片(Offer 或 Answer),并将它们递交给对方。同时,每个人也接收并保存了对方的名片,这样双方就可以在需要联系时,通过这些名片上的信息找到彼此,并建立起通信。这种理解就概括了 WebRTC 中信令协商的基本原理和过程

2.2:网络协商

     当媒体协商完成后,WebRTC 就开始建立网络连接,其过程称为 ICE(Interactive Connectivity Establishment)交互式连接建立。ICE 不是一种协议,整合了 STUNTURN 两种协议(用于 NAT 穿透)的框架。

注意:ICE 是在各端调用 setLocalDescription() 后就自动开始了,并且是多次尝试去网络连接。也就是收集 Candidate的过程。

   WebRtc中很重要的一个环节,便是网络协商(网络协商 包括了“打洞”,但不仅仅只是打洞),也就是打通两个浏览器端之间的网络。两者不是都可以访问网络吗?为什么还要 再次打通网络呢?

那是 因为理想的网络情况:是每个浏览器的电脑都是私有公网IP,可以直接进行点对点连接。

例如下图:

        但是实际上,随着入网的设备越来越多,IPV4的地址池慢慢见底,新接入互联网的设备很难再分配到单独公网的 IPv4 地址,为了解决这个问题,引入了一个叫 NAT(Network address translation)的协议;新接入的设备不再直接分配公网的 IPv4 地址,而是躲在 NAT 设备(路由器等)之后,NAT 会给后面的每一个设备都分配一个单独的内网地址,就像家庭 或者 公司网络中一般都是一个公网IP出口,然后其他设备都是躲在这个公网地址后的内网地址。

     

简单解释下:

 NATNAT(Network Address Translation,网络地址转换)是一种网络技术,用于解决专用网络内部设备与公共网络之间的连接问题。其主要功能是将内部网络(私有网络)中的IP地址转换为外部网络(公共网络)的IP地址,以便内部设备能够访问互联网或与外部设备进行通信,同时保护内部网络不被直接访问。

NAT墙的进一步了解 和P2P协议,参考连接:

深入浅出WebRTC传输协议icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/661166646

Candidate(候选者)Candidate(候选者)是WebRTC中用于描述设备可以使用的网络地址和传输协议的概念。在WebRTC建立对等连接的过程中,每个设备会收集自己的候选者信息,并交换给对方,以便在复杂的网络环境中找到可用的通信路径。简单的说 就是服务器的 IP 地址、端口号以及使用的传输协议。知道了这些信息,才能建立连接。而 Candidate 正是 WebRTC 用来描述它可以连接的远端的基本信息,因此 Candidate 是至少包括 IP 地址、端口号、协议的一个信息集合。

STUN:(Session Traversal Utilities for NAT,NAT会话穿越实用程序)是一种网络协议,旨在帮助设备位于NAT后面的客户端发现其真实的公网IP地址和端口号。它允许位于NAT(或多重 NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的 Internet端端口。说白了就是 帮打洞的机制叫 ICE,帮忙打洞的服务器叫 STUN 服务。STUN 服务器用于获取计算机的公网 IP 地址。

TURN(Traversal Using Relays around NAT)是一种网络协议和服务,是STUN的扩展,用于解决无法通过STUN直接建立连接的情况,也就是当STURN搞不定网络的时候,就摆烂了,开始换个思路走了,也就是搞不定我就直接使用 TURN服务直接代理转发了

TURN 服务器会作为中转,转发多媒体数据就意味着会消耗大量的带宽。

但是,ICE打洞连同网络时,我们只需要配置好 STURN和TURN对应的地址,然后调用函数就行了,WebRTC已经帮我们完成了工作。

2.3:信令服务器

现在客户端都有媒体信息和网络信息 ,但是要去转发交换,现在则需要一个信令服务器(Signal server)转发对端的媒体信息和网络信息。

信令服务器在WebRTC中充当中介和调度者的角色,它不传输实际的媒体数据(音视频流),而是传递连接所需的控制信息和元数据。

作为中间人帮助建立连接,主要负责:

1:信令的处理,如媒体协商消息的相互转发传递

2:管理房间信息。比如房间进出、人员信息变化、状态连接变化等。所以也叫信令服务器也叫房间服务器。

下一篇继续,下一篇介绍环境搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/843507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud的认识和初步搭建

目录 一.认识SpringCloud 二.SpringCloud的部署 2.1开发环境 2.2数据库的建立 2.3SpringCloud的部署 第一步: 创建Maven项目 第二步:完善pom文件 第三步:创建两个子项目 第四步:声明项目依赖以及构建插件 第五步&#xf…

Docker核心技术:容器技术要解决哪些问题

云原生学习路线导航页(持续更新中) 本文是 Docker核心技术 系列文章:容器技术要解决哪些问题,其他文章快捷链接如下: 应用架构演进容器技术要解决哪些问题(本文)Docker的基本使用Docker是如何实…

Ubuntu20.04从零开搭PX4MavrosGazebo环境并测试

仅仅是个人搭建记录 参考链接: https://zhuanlan.zhihu.com/p/686439920 仿真平台基础配置(对应PX4 1.13版) 语雀 mkdir -p ~/tzb/catkin_ws/src mkdir -p ~/tzb/catkin_ws/scripts cd catkin_ws && catkin init catkin build cd…

RV1103使用rtsp和opencv推流视频到网页端

参考: Luckfox-Pico/Luckfox-Pico-RV1103/Luckfox-Pico-pinout/CSI-Camera Luckfox-Pico/RKMPI-example Luckfox-Pico/RKMPI-example 下载源码 其中源码位置:https://github.com/luckfox-eng29/luckfox_pico_rtsp_opencv 使用git clone由于项目比较大&am…

共享模型之无锁

一、问题提出 1.1 需求描述 有如下的需求,需要保证 account.withdraw() 取款方法的线程安全,代码如下: interface Account {// 获取余额Integer getBalance();// 取款void withdraw(Integer amount);/*** 方法内会启动 1000 个线程&#xf…

纯净IP代理网站解析与代理推荐

一、纯净IP代理网站解析 在浩瀚的代理服务市场中,纯净IP代理以其特有的优势脱颖而出。它们不仅提供高质量、无污染的IP资源,还注重服务的稳定性和安全性,确保用户在使用过程中能够享受到好的网络体验。纯净IP代理的优势在于其能够有效解决因…

科技论文在线--适合练习期刊写作和快速发表科技成果论文投稿网站

中国科技论文在线这个平台可以作为练手的一个渠道,至少可以锻炼一下中文写作,或者写一些科研方向的简单综述性文章。当然,如果你的老师期末要求也是交一份科技论文在线的刊载证明的话,这篇文章可以给你提供一些经验。 中国科技论…

【引领未来智造新纪元:量化机器人的革命性应用】

在日新月异的科技浪潮中,量化机器人正以其超凡的智慧与精准的操作,悄然改变着各行各业的生产面貌,成为推动产业升级、提升竞争力的关键力量。今天,让我们一同探索量化机器人在不同领域的广泛应用价值,见证它如何以科技…

皇后游戏1

先把这个推导看完 现在我们来讲一下总结 首先,我们要观察到 c i c_i ci​递增,这样才能更简单,就不用像国王游戏那样在交换前后比较 i i i和 j j j的max了(就是说,国王游戏需要比较 m a x ( c i , c j ) max(c_i,c_j)…

获取本地时间(Linux下,C语言)

一、函数 #include <time.h> time_t time(time_t *tloc);函数功能&#xff1a;获取本机时间&#xff08;以秒数存储&#xff0c;从1970年1月1日0:0:0开始到现在&#xff09;。返回值&#xff1a;获得的秒数&#xff0c;如果形参非空&#xff0c;返回值也可以通过传址调用…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成

目录 背景介绍 训练与推理 训练 推理 开始部署 1. 把项目源码下载到本地 2. 创建 conda 环境 3. 使用 pip 安装软件包 4. 下载预训练模型 5. 准备推理数据 6. 运行推理 关于训练 为训练准备数据 训练 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞…

操作系统(3)——内存管理

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/6grrU)内存管理无存储器抽象存储器抽象实现以下几方面小结 虚拟内存实现以下方面总结 页面置换算法概述常见的页面置换算法先进先出&#xff08;FIFO&#xff09;算法最近最少使用&#xff08;LRU&#xff09;算法总结 小程…

list(链表)容器的规则及list的高级排序案例

1.list的基本概念&#xff1a; 功能&#xff1a;将数据进行链式存储 list&#xff08;链表&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表是由一系列节点组成&#xff0c;节点的组成包含存储数据元素的…

【保卫花果山】游戏

游戏介绍 拯救花果山是一款玩家能够进行趣味闯关的休闲类游戏。拯救花果山中玩家需要保护花果山的猴子&#xff0c;利用各种道具来防御妖魔鬼怪的入侵&#xff0c;游戏中玩家需要面对的场景非常的多样&#xff0c;要找到各种应对敌人的方法。拯救花果山里玩家可以不断的进行闯…

huawei USG6001v1学习----NAT和智能选路

目录 1.NAT的分类 2.智能选路 1.就近选路 2.策略路由 3.智能选路 NAT:&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09; 指网络地址转换&#xff0c;1994年提出的。NAT是用于在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局…

在win10上通过WSL和docker安装Ubuntu子系统,并配置Ubuntu可成功使用宿主机GPU

本文主要记录win10系统上,通过WSL的Ubuntu系统以及Docker使用GPU的全部过程。 文章目录 1、 启用hyper-v2、 安装docker3、 安装WSL3.1 安装WSL23.1.1 检查是否安装了WSL23.1.1 安装和配置 WSL 23.2 安装Ubuntu 子系统3.3 检查并修改WSL版本4、docker配置ubuntu20.04 LTS5、下…

C语言函数:编程世界的魔法钥匙(2)-学习笔记

引言 注&#xff1a;由于这部分内容比较抽象&#xff0c;而小编我又是一个刚刚进入编程世界的计算机小白&#xff0c;所以我的介绍可能会有点让人啼笑皆非。希望大家多多包涵&#xff01;万分感谢&#xff01;待到小编我学有所成&#xff0c;一定会把这块知识点重新介绍一遍&a…

零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码

文章目录 一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序 六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结 一.概要 DH…

ubuntu20.04支持win10远程桌面连接

1. 安装xrdp sudo apt install xrdp 2. 检查xrdp状态 sudo systemctl status xrdp 要处于running状态 3.&#xff08;若为Ubuntu 20&#xff09;添加xrdp至ssl-cert sudo adduser xrdp ssl-cert 4. 重启服务 sudo systemctl restart xrdp 5. window 远程桌面连接&am…

“信息科技风险管理”和“IT审计智能辅助”两个大模块的部分功能详细介绍:

数字风险赋能中心简介 数字风险赋能中心简介 &#xff0c;时长05:13 大家好&#xff01;我是AI主播安欣&#xff0c;我给大家介绍一下数字风险赋能中心。 大家都知道当前我国政企机构的数字化转型已经进入深水区&#xff0c;数字化转型在给我们带来大量创新红利的同时&#xf…