音视频绕不开的话题之WebRTC

2023-10-31

什么是WebRTC?

闲来无事,我们今天探讨下音视频绕不开的一个话题:WebRTC。WebRTC之于音视频行业,无异于FFMpeg,可以说WebRTC的开源,让音视频行业大跨步进入发展快车道。

WebRTC是一个支持实时音视频通信的开源项目,它允许网络应用或者站点在无需安装任何插件或者第三方的软件的情况下,建立浏览器之间点对点的(Peer-to-Peer)的音视频通信。

WebRTC项目由三个模块组成:媒体模块、信令模块和网络模块。

  1. 媒体模块:主要负责音视频的采集、编解码以及加密等处理,其中音视频的采集和编解码过程分别使用了G.711、H.264和Opus等音视频编解码协议,这些协议可以在保证音视频质量的同时,尽可能地减少传输的数据量,从而提高通信效率。
  2. 信令模块:主要负责在通信过程中提供信令交换的支持,包括建立通信连接、协商通信参数以及管理通信过程等功能。
  3. 网络模块:主要负责音视频数据的传输,包括数据包的发送和接收,同时还支持对等网络连接的建立和维护。

WebRTC的发展历程

2010年5月,Google以6820万美元收购VoIP软件开发商Global IP Solutions的GIPS引擎,并改为名为“WebRTC”。WebRTC使用GIPS引擎,实现了基于网页的视频会议,并支持722,PCM,ILBC,ISAC等编码,同时使用谷歌自家的VP8视频解码器;同时支持RTP/SRTP传输等。

谷歌2011年6月3日宣布向开发人员开放WebRTC架构的源代码。这个源代码将根据没有专利费的BSD(伯克利软件发布)式的许可证向用户提供。开发人员可访问并获取WebRTC的源代码、规格说明和工具等。 [2]

Google Chrome:2012年1月,将WebRTC集成进Dev Channel,同年6月又完成Stable Channel的20版的集成(2012年7月,PeerConnection与MediaStream仍必须透过chrome://flags page来打开)。

Mozilla Firefox:2012年初Mozilla集成WebRTC入Firefox Alpha,此一版本的Audio Mixing已完成于Media Stream。

2012年1月,谷歌已经把这款软件集成到Chrome浏览器中。同时FreeSWITCH项目宣称支持iSAC audio codec。

2012年4月,Mozilla展示Firefox中WebRTC的视频对话。

2013年6月,发布22.0版本正式集成及支持WebRTC。

2013年9月,发布24.0版本,并宣布Firefox for Android(移动版)正式集成及支持WebRTC。

Opera:2012年1月,Opera初步集成WebRTC。

Internet Explorer:Microsoft开始开放API。

Ericsson:2012年11月,Ericsson Labs做出了全世界第一个可以支持WebRTC的手机浏览器。

SeaMonkey:2013年1月发布的15.0版本初步集成WebRTC。

2019年10月22日,W3C WebRTC 工作组(Web Real-Time Communications Working Group)发布 WebRTC 可伸缩视频编码(SVC)扩展(Scalable Video Coding (SVC) Extension for WebRTC)的首个公开工作草案(First Public Working Draft)。 文档定义了 WebIDL 中的一组 ECMAScript APIs 来扩展 WebRTC 1.0 API,以允许用户代理支持可伸缩视频编码(SVC)。 [5]

2022年3月15日,W3C 媒体工作组发布自动播放策略检测(Autoplay Policy Detection)规范的首个公开工作草案。该规范为开发者提供了一种能力,用以探测在不同情况下是否允许自动开始播放媒体文件。欢迎公众通过 Github 反馈对该文档的意见与建议。

WebRTC用途

WebRTC的用途有以下几个方面:

  1. 网页实时通信:WebRTC的主要目的是实现网页间的实时通信,包括音视频通话、屏幕共享等。通过WebRTC技术,用户可以在不安装任何插件或第三方软件的情况下,在网页上直接进行实时音视频通信,大大提高了通信的便捷性和效率。
  2. 点对点通信:WebRTC支持点对点的通信方式,这种通信方式可以在对等体之间直接建立连接,避免了传统通信方式中的服务器中转,提高了通信效率和可靠性。
  3. 安全性保障:WebRTC使用了一些安全机制,如DTLS和SRTP等协议,对音视频数据进行加密和完整性保护,保障了通信的安全性。
  4. 跨平台:WebRTC可以在各种支持HTML5的浏览器中使用,包括PC、移动设备和智能电视等设备,可以跨平台使用。
  5. 灵活的扩展性:WebRTC提供了丰富的API和接口,可以方便地进行定制和扩展,可以满足不同场景下的需求。

WebRTC通信原理

WebRTC将媒体采集、编码、传输、解码、渲染等功能集成在一起,并通过一些安全机制和网络传输技术,实现了实时、安全、高效的音视频通信。

​通信原理主要包括以下几个步骤:

  1. 媒体采集:在通信开始前,用户通过WebRTC的API,将本地的音视频数据采集到应用中。
  2. 媒体编码:在媒体采集后,WebRTC会对音视频数据进行编码,以便进行后续的传输和处理。WebRTC支持多种音视频编码协议,如H.264、G.711和Opus等。
  3. 媒体数据传输:在媒体编码后,WebRTC会将音视频数据传输到对等体之间。WebRTC支持点对点(P2P)的通信方式,可以在对等体之间直接建立连接,避免了传统通信方式中的服务器中转,提高了通信效率和可靠性。
  4. 媒体解码:在接收到对等体传来的音视频数据后,WebRTC会对这些数据进行解码,还原成原始的音视频流。
  5. 媒体渲染:在音视频数据解码后,WebRTC会将音视频数据进行渲染,以便用户可以听到和看到对方的音视频信息。
  6. 数据加密和完整性保护:在音视频数据传输过程中,WebRTC使用了一些安全机制,如DTLS和SRTP等协议,对音视频数据进行加密和完整性保护,保障了通信的安全性。
  7. 网络传输和连接管理:WebRTC还提供了网络传输和连接管理的功能,包括信令传输、网络状态检测、连接管理等功能,以保证通信的稳定性和可靠性。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

音视频绕不开的话题之WebRTC 的相关文章

随机推荐

  • ecshop中ajax的调用原理 1

    ecshop中ajax的调用原理 1 首先ecshop是如何定义ajax对象的 ecshop中的ajax对象是在js transport js文件中定义的 里面是ajax对象文件 声明了一个var Ajax Transport 对象和一个方
  • 大坝安全监测有哪些监测项目

    大坝安全监测有 工程主体结构 地基基础 两岸边坡 相关设施以及周围环境所作的测量及观察 也包括对建筑物外表及内部大范围对象的定期或不定期的直观检查和仪器探查 通过观测仪器和设备 以及时取得反映大坝和基岩性态变化以及环境对大坝作用的各种数据的
  • centos6.5搭建贴吧云签到平台(多图预警)

    前提 我已经用oneinstack服务搭建好了主机环境LNAMP Linux NginxApache Mysql php 默认目录是 data wwwroot default 详细步骤 1 先下载要安装的文件 我用的是GitHub上star
  • 虚拟机vmware安装win10提示operating system not found解决办法

    首先如果启动提示进入BIOS 则删除下述文件的efi 首先先设置启动PE镜像 加载启动盘PE ISO后进入PE 将系统镜像复制到U盘 PE里先分区 然后再安装 PE里安装完后重启 后面的步骤按自动的即可
  • postman循坏调用接口

    postman循坏调用接口 新建一个Collections 在新建的Collections里面新建需要循环的接口 将需要循坏变化的参数设置成变量 设置好变量之后 运行整个collections 变量值的数量应该与迭代次数一致 可以导入jso
  • YOLOv5+单目测距(python)

    YOLOv5 单目测距 python 1 相关配置 2 测距原理 3 相机标定 3 1 标定方法1 3 2 标定方法2 4 相机测距 4 1 测距添加 4 2 细节修改 可忽略 4 3 主代码 5 实验效果 相关链接 1 YOLOV7 单目
  • python ttk Treeview的插入、清空、各种点击事件、获取条目值、标题单击排序

    昨天整了一天Tkinter的treeview 发现中文的教程乃至提问都很少 其中两个问题的解决都是靠steakoverflow上找到的 在这里放出来我遇到并解决的问题 大家以后可能遇到的话就能省点事了 插入方法 import tkinter
  • 第二章-Kali安装

    目录 2 Kali Linux安装 硬盘安装 虚拟机安装 01硬盘安装 02DOCKER 03虚拟机安装 3 Kali Linux 安装 持久加密USB安装 熟悉环境 熟悉BASH命令 01 持久加密USB安装 1 02 持久加密USB安装
  • 专注于开源技术的研究与应用由Tencent://Message协议想到的一个解决方案

    源代码下载 http files cnblogs com phinecos HelloWorldProtocal rar 前天在BruceZhang 的一篇博文 求助 如何在ASP页面中调用Winform程序呢 中回答了他提出的问题 但细想
  • jsp调用证书类ocx控件问题

    1 先注册ocx 本次使用的方式是先将我调用的两个控件打包成 CAB文件 然后做成一个exe让用户去下载注册 2 jsp页面上使用 进行调用 ps clsid可以在注册表中找到 id是自己定义的 因为控件在第一步已经注册到注册表里 code
  • 重学Elasticsearch7(来源官方文档)

    一 开篇总览 1 bulk操作最好请求体数据大小在5m 15m 2 由于要给文件系统缓存留下足够空间 es的jvm堆大小不要超过服务器可用内存空间的一半 二 聚合 1 在聚合时 missing字段可以给没有该字段的文档以默认值 2 带权重的
  • html登录页面整理

    img src data image png base64 iVBORw0KGgoAAAANSUhEUgAAAycAAAJGCAYAAABBdvriAAAgAElEQVR4Aey9W5okN5KsWUz2qmaxs7zzNEvoSo78Ii
  • java自动化测试语言高级之Java 9 新特性

    java自动化测试语言高级之Java 9 新特性 文章目录 java自动化测试语言高级之Java 9 新特性 Java 9 新特性 Java 9 新特性 Java 9 发布于 2017 年 9 月 22 日 带来了很多新特性 其中最主要的变
  • 内嵌模式搭建Hive

    在此之前已经搭建好了一个三台机器的hadoop集群 https blog csdn net QYHuiiQ article details 123055389 spm 1001 2014 3001 5501 接下来在此基础上搭建hive 下
  • (C++)GDAL学习笔记——1 均值滤波和中值滤波

    就要开始研究生生活了 这个暑假要学一下GDAL相关的知识 这里将中间完成的一些东西Mark下来 方便自己以后回顾 任务 利用Vc 编写一个3 3的均值滤波或中值滤波程序 代码 注 此次试验用到的影像为波段数为1的tif格式影像 主函数 in
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛赛道 赛道 B:北京移动用户体验影响因素研究

    问题 1 根据附件 1 和附件 2 分别研究影响客户语音业务和上网业务 满意度的主要因素 并给出各因素对客户打分影响程度的量化分析和结果 附件 1 2 中各字段的解释说明见附件 5 问题一本质就是特征筛选问题 而且要给出各特征影响程度的量化
  • node实现发送邮件和上传文件功能

    文章目录 node实现发送邮件带附件 node 是什么 下载 文件结构 index html文件 nodemails js文件 node实现发送邮件带附件 记录下我前不久刚刚接触过的node用来实现发送邮件和上传文件图片功能 希望能帮到和我
  • L2-021 点赞狂魔分数

    微博上有个 点赞 功能 你可以为你喜欢的博文点个赞表示支持 每篇博文都有一些刻画其特性的标签 而你点赞的博文的类型 也间接刻画了你的特性 然而有这么一种人 他们会通过给自己看到的一切内容点赞来狂刷存在感 这种人就被称为 点赞狂魔 他们点赞的
  • vector扩容

    扩容原理 vector以连续的数组存放数据 当vector空间已满时会申请新的空间并将原容器中的内容拷贝到新空间中 并销毁原容器 存储空间的重新分配会导致迭代器失效 因为分配空间后需要进行拷贝 编译器会预分配更多空间以减少发生拷贝影响程序效
  • 音视频绕不开的话题之WebRTC

    什么是WebRTC 闲来无事 我们今天探讨下音视频绕不开的一个话题 WebRTC WebRTC之于音视频行业 无异于FFMpeg 可以说WebRTC的开源 让音视频行业大跨步进入发展快车道 WebRTC是一个支持实时音视频通信的开源项目 它