音视频绕不开的话题之WebRTC

news2025/1/11 0:03:13

什么是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还提供了网络传输和连接管理的功能,包括信令传输、网络状态检测、连接管理等功能,以保证通信的稳定性和可靠性。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac系统终端运行python文件

1.在要运行的python文件首行里添加python解释器路径代码 代码: #!/usr/bin/env python3 注意:上面代码中的python3是对应当前的python版本 例子: 2.复制要运行的python文件位置,在终端使用代码进入要运行的文件位置 终端运行代码&…

架构训练营3:架构设计流程和架构师职责

架构师相关职责: 架构师是业务和技术之间的桥梁,架构师不能只顾技术,不懂业务,架构师很容易两头不讨好 三个核心能力: 判断:1业务理解力2.技术能力3.沟通能力 拆解:1技术深度2.技术宽度3.技术…

出差在外,远程访问企业局域网象过河ERP系统【内网穿透】

文章目录 概述1.查看象过河服务端端口2.内网穿透3. 异地公网连接4. 固定公网地址4.1 保留一个固定TCP地址4.2 配置固定TCP地址 5. 使用固定地址连接 概述 ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。…

抖音seo软件技术开发源码搭建部署

抖音SEO矩阵系统源码开发流程分为以下几个步骤: 1.需求分析 在开发抖音SEO矩阵系统源码之前,首先需要对用户的需求进行分析,确定开发的功能和特性。 2.架构设计 根据需求分析的结果,进行架构设计,确定系统的整体框…

模型压缩-裁剪、量化、蒸馏

模型压缩是一种缩小神经网络结构和参数的技术。 压缩的模型在使用少量计算资源 的情况下,使其性能与原始模型近似;常见包括剪枝、量化、蒸馏、神经结构搜索(NAS)等 ##模型压缩与工程部署关注的常用参数1)模型大小 一般使用参数量parameter来衡…

Acwing算法基础 前缀和 差分 双指针 位运算 离散化

前缀和与差分 AcWing 795. 前缀和 import java.util.*; public class Main{public static void main(String[] args ){Scanner scnew Scanner(System.in);int nsc.nextInt();int msc.nextInt();int[] arrnew int[n1];arr[0]0;for(int i1;i<n;i) {arr[i]sc.nextInt()arr[i-1…

【从零开始学CSS | 第二篇】伪类选择器

目录 前言&#xff1a; 伪类选择器&#xff1a; 常见的伪类选择器&#xff1a; 举例&#xff1a; 小窍门&#xff1a; 总结: 前言&#xff1a; 上一篇文章我们详细的为大家介绍了一些常见的选择器&#xff0c;这几篇我们将再次介绍CSS中的一个常见选择器——伪类选择器&am…

flutter开发实战-css的linear-gradient的值转换成LinearGradient

flutter开发实战-css的linear-gradient的值转换成LinearGradient 在开发中遇到了参照前端的css的属性值&#xff0c;需要将css的linear-gradient值转换成LinearGradient&#xff0c;这样可以直接设置相应的值。这里暂时不涉及到&#xff0c;颜色值名称、color-stop1&#xff0…

第6章 NVMe 介绍 6.1-6.3

6.1 AHCI 到 NVMe AHCI协议。NVMe协议。 HDD 和早期的 SSD 绝大多数都是使用SATA接口&#xff0c;跑的是AHCI&#xff0c;它是一种系统接口标准。 后来&#xff0c;AHCI 和 SATA 不能满足高性能和低时延 SSD 的需求&#xff0c;SSD 需要更快、更高效的协议和接口。因此 NVMe 出…

webug4.0靶场通关笔记

文章目录 注入显错注入布尔注入延时注入post注入过滤注入宽字节注入xxe注入csv注入万能密码登陆 XSS反射型xss存储型xssDOM型xss过滤xss链接注入 任意文件下载任意文件下载mysql配置文件下载 上传漏洞文件上传(前端拦截)文件上传(解析漏洞)文件上传(畸形文件)文件上传(截断上传…

layui中laydate日期组件闪动打不开问题解决

在laydate.render里配置trigger:click’就可以了&#xff08;已解决&#xff09;

路径规划算法:基于人工蜂鸟优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于人工蜂鸟优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于人工蜂鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

Leetcode-每日一题【83.删除排序链表中的重复元素】

题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2]输出&#xff1a;[1,2] 示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3]输出&#x…

Docker 安装与基本使用

一、简介 Docker 官方文档、Docker 中文文档&#xff0c;更新会落后于官方文档 什么是 Docker ? Docker 是一个应用打包、分发、部署的工具&#xff0c;也可以把它理解为一个轻量的虚拟机&#xff0c;它只虚拟软件需要的运行环境&#xff0c;多余的一点都不要&#xff0c;而普…

jinkens编译问题

可以看到是NapaMedia 编译有问题 往上面查看 再在gerrit上看提交的这个文件。。打开看下是不是有冲突 果然有冲突 有冲突在gerrit上直接解决冲突 然后保存 updatechanges再publish edit 然后点进编译

Gym - 101652

A - Odd Palindrome 题意&#xff1a;给你一个字符串如果它的所有回文子串长度为奇数&#xff0c;输出Odd.否则输出Or not. 思路&#xff1a;其实只要判断是否有两个相连的字符就可以了 #include <bits/stdc.h> using namespace std; #define pi 3.1415926 #define X f…

STM32初识---概念了解(下)

复位和时钟控制&#xff08;RCC) 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 电源复位 当以下事件中…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

s3fs安装使用

s3fs安装使用 前言 最近在预研将对象存储桶挂载到本地文件系统的需求&#xff0c;查阅了一些相关的资料&#xff0c;找到s3fs-fuse开源组件&#xff0c;可以满足需求&#xff0c;本文主要记录一下s3fs的部署以及使用。 s3fs简介 s3fs 是一个 C 开发的开源工具&#xff0c;可…

Amplify-Shader-Pack下载

ASE相关效果资源https://download.csdn.net/download/mayzhengxi/87915649?spm1001.2014.3001.5503