前端音视频之WebRTC初探

article/2025/9/21 4:42:45

WebRTC Web Real-Time Communication 网页即时通信

    WebRTC 于 2011 年 6 月 1 日开源,并在 Google、Mozilla、Opera 等大佬们的支持下被纳入 W3C 推荐标准,它给浏览器和移动应用提供了即时通信的能力。

WebRTC 优势及应用场景

优势

  • 跨平台(Web、Windows、MacOS、Linux、iOS、Android)

  • 实时传输

  • 音视频引擎

  • 免费、免插件、免安装

  • 主流浏览器支持

  • 强大的打洞能力

应用场景

    在线教育、在线医疗、音视频会议、即时通讯工具、直播、共享远程桌面、P2P网络加速、游戏(狼人杀、线上KTV)等。

    (有喜欢玩狼人杀的同学吗?有时间可以一起来一局,给我一轮听发言的时间,给你裸点狼坑,一个坑容错。)

WebRTC 整体架构

   拉回来,我们看一看 WebRTC 的整体架构,我用不同的颜色标识出了各层级所代表的含义。

  • Web 应用

  • Web API

  • WebRTC C++ API

  • Session Management 信令管理

  • Transport 传输层

  • Voice Engine 音频引擎

  • Video Engine 视频处理引擎

我们再来看下核心的模块:

Voice Engine 音频引擎

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

  

    VoIP 软件开发商 Global IP Solutions 提供的 GIPS 引擎可以说是世界上最好的语音引擎,谷歌大佬一举将其收购并开源,也就是 WebRTC 中的 音频引擎。

  • iSAC:WebRTC 音频引擎的默认编解码器,针对 VoIP 和音频流的宽带和超宽带音频编解码器。

  • iLBC:VoIP 音频流的窄带语音编解码器。

  • NetEQ For Voice:针对音频软件实现的语音信号处理元件。NetEQ 算法是自适应抖动控制算法以及语音包丢失隐藏算法,能够有效的处理网络抖动和语音包丢失时对语音质量产生的影响。

  • Acoustic Echo Canceler:AEC,回声消除器。

  • Noise Reduction:NR,噪声抑制。

Video Engine 视频处理引擎

VPx 系列视频编解码器是 Google 大佬收购 ON2 公司后开源的。

  • VP8:视频图像编解码器,WebRTC 视频引擎默认的编解码器。

  • Video Jitter Buffer:视频抖动缓冲器模块。

  • Image Enhancements:图像质量增强模块。

WebRTC 通信原理

媒体协商

    媒体协商也就是让双方可以找到共同支持的媒体能力,比如双方都支持的编解码器,这样才能实现彼此之间的音视频通信。

SDP Session Description Protocal

    媒体协商所交换的数据就是 SDP,说是协议,其实 SDP 并不是一个真正的协议,它就是一种描述各端“能力”的数据格式。

上图所示就是 SDP 的一部分,详细内容请参考:SDP: Session Description Protocol

或者参考卡神的这篇文章:WebRTC:会话描述协议SDP

网络协商

    ICE Interactive Connectivity Establishment 互动式连接建立

    想要建立连接,我们要需要拿到双方 IP 和端口的信息,在当下复杂的网络环境下,ICE 统一了各种 NAT 穿越技术(STUN、TURN),可以让客户端成功地穿透远程用户与网络之间可能存在的各类防火墙。

STUN、TURN

STUN:简单 UDP 穿透 NAT,可以使位于 NAT(或多重 NAT) 后的客户端找出自己的公网 IP 地址,以及查出自己位于哪种类型的 NAT 及 NAT 所绑定的 Internet 端口。

我们知道,NAT 主要有以下四个种类:

  • 完全锥型 NAT

  • IP 限制锥型

  • 端口限制锥型

  • 对称型

    前三种都可以使用 STUN 穿透,而面对第四种类型,也是大型公司网络中经常采用的对称型 NAT ,这时的路由器只会接受之前连线过的节点所建立的连线。

    那么想要处理这种网络情况,我们就需要使用 TURN (中继穿透 NAT) 技术。

TURN 是 STUN 的一个扩展,其主要添加了中继功能。在 STUN 服务器的基础上,再添加几台 TURN 服务器,如果 STUN 分配公网 IP 失败,则可以通过 TURN 服务器请求公网 IP 地址作为中继地址,将媒体数据通过 TURN 服务器进行中转。

信令服务器 Signal Server

    拿到了双方的媒体信息(SDP)和网络信息(Candidate)后,我们还需要一台信令服务器作为中间商来转发交换它们。

    信令服务器还可以实现一些 IM 功能,比如房间管理,用户进入、退出等。

小结

    本文我们了解了 WebRTC 优势及应用场景、WebRTC 的整体架构及主要模块构成以及 WebRTC 的通信原理。这些基础知识和概念是需要我们牢记的,大家要记牢~

作者:童欧巴 链接:前端音视频之WebRTC初探 - 掘金 


http://chatgpt.dhexx.cn/article/WlVUUHhd.shtml

相关文章

(常规更新)1.C++入门第一讲——编程如此简单

格言:自立才能自主,靠人更须靠己。有志之人立长志,无志之人常立志。千里之行,始于足下;艰难困苦,玉汝于成。少壮不努力,老大徒伤悲。✊✊✊ 📫 如果您觉得文章里有错误的地方&#x…

MySQL8.0的下载及安装 (8.0.15)

MySQL8.0的下载及安装 (一)1.下载MySQL8.0.15 (两种方式1.csdn下载(无积分联系我私发)2.官网下载) csdn下载链接:https://download.csdn.net/download/qq_42397270/19886950 1.访问MySQL官网:https://www…

JDK17解压版---安装与配置与查看版本

JDK17解压版下载地址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows bin目录 :存放各种工具命令(如 javac、java、javap等)。 conf 目录:里面存放一些配置文件 。 include目录:存…

FastReport .NET 2023 Crack

FastReport .NET 2023 Crack  Blazor WebAssembly支持-为FastReport.NET Enterprise及更高版本的所有者添加了FastReport.Blazor.Wasm包。现在,您可以使用Razor组件在WebAssembly应用程序中显示报告。Blazor WebAssembly支持目前处于测试阶段。 能够打开另一个报告…

Total Software Deployment为您的企业网络管理软件部署

Total Software Deployment为您的企业网络管理软件部署 Total Software Deployment 可帮助您在本地网络上部署软件。它允许您同时在多台计算机上安装多个软件包。它包括软件库存管理、自动网络扫描和多种类型安装包的并发部署。 总体软件部署功能 轻松部署软件- 让 Total Softw…

MySQL绿色版安装教程

在windows上安装mysql数据库有时候会出现怎么都按照不上去的情况,特别是在卸载或者安装过程中终止之后在重新安装的时候,会出现莫名其妙的问题,接下来我们来简单的通过使用免安装版的MySQL避免这种问题.其中操作过程如下: 去Oracle官网下载MySQL的对应版本(https://dev.mysql.…

centos6.5 配置mysql5.6免安装版

1、从mysql官网下载mysql5.6 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 2、解压文件并移动到/usr/local/mysql #tar -xzvf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz #mv mysql-5.6.30-linux-glibc2.5-x86_64 /usr/local/mys…

艾诗娜:红女巫 Ashina: The Red Witch Build.10280376 官方中文 免安装【209M】

艾诗娜:红女巫是一款含有探索要素的故事冒险游戏。通过使用道具来解决谜题,并和众多角色对话来进一步深挖游戏的故事! 和艾诗一起来场妖怪界大冒险吧!在这个神秘的妖怪世界中充满着奇怪的生物、有趣的角色还有难忘的时刻&#xff…

Java SE(七)之泛型(泛型类,泛型接口,泛型方法)

文章目录 泛型概述1.泛型的引入2.泛型的定义3.泛型的好处4.泛型标记符 泛型类泛型方法泛型接口通配符与C模板类可变参数 泛型概述 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类…

C#的泛型方法

在 C# 语言中泛型方法是指通过泛型来约束方法中的参数类型,也可以理解为对数据类型设 置了参数。 如果没有泛型,每次方法中的参数类型都是固定的,不能随意更改。 在使用泛型后,方法中的数据类型则有指定的泛型来约束,…

java的泛型方法_Java中的泛型方法

泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test t new Test();&am…

泛型类和泛型方法

泛型方法是指调用该方法时才声明泛型类型。即不用和泛型类的泛型类型一致。 当为实例泛型方法时,可以声明类为泛型类或者将该方法声明为泛型方法。 当有静态泛型方法时,只能将该方法声明为泛型方法。 泛型类可以继承泛型类,也可以继承是具有泛…

Java泛型方法解惑

概述 什么是泛型? 泛型,是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 提到参数,最熟悉的就是定义方法…

推荐一款超级好用的AI模型训练平台——Tesra超算网络!

2019独角兽企业重金招聘Python工程师标准>>> 作为一个刚接触AI行业的小萌新,好不容易做好了一个深度学习的模型,然后就兴冲冲的想要在我的电脑上做训练,自我感觉我的笔记本的性能还不错,然后loss下降很慢,再…

AI行业全面复苏,秋招AI岗位竞争激烈!Tesra超算网络助力找到合适的岗位!

2019独角兽企业重金招聘Python工程师标准>>> 随着各大互联网巨头纷纷下场,AI技术再经历过几次寒冬之后全面复苏,站在了时代的风口,迎来了爆发时期,成为了时代的趋势!人工智能企业搞得轰轰烈烈势如破竹&…

大数据与AI时代,企业爆发之道?Tesra超算网络保驾护航!

2019独角兽企业重金招聘Python工程师标准>>> 现如今,人人都在谈论大数据,大数据究竟能够为企业带来什么呢?大数据又怎么才能够为企业带来最大的效益呢? 随着大数据时代的到来,根据数据分析的需求也由此诞生…

人工智能的春天来了!Tesra超算网络,助力AI开发!

2019独角兽企业重金招聘Python工程师标准>>> 我们必须承认,尽管人工智能技术的起源可以追溯到数十年前,不过受限于软硬件的发展,人工智能直到近几年才开始突飞猛进。其中算力是制约人工智能发展的首要因素,随着算力瓶颈…

ApacheCN×Tesra 免费算力申请活动

Tesra 超算网络是由 SAIC 基金会发起的,专为人工智能产业提供底层技术及 AI 资源共享服务的分布式"超算中心"。Tesra 超算网络基于 GPU 并行计算技术,通过整合全球分散的 GPU 算力资源,在建设人工智能基础设施的同时,为…

Tesra超算网络AI训练的使用流程

这篇文章将会为大家详细地介绍一下,Tesra超算网络AI训练的使用流程。 ​在使用Tesra超算网络进行AI模型训练前,需要完成官网注册和开发者钱包注册。 ​一:官网注册 ​Tesra超算网络的官网地址: http://supernet.tesra.io &…

Tesra平台训练数据(没有足够强大的显卡情况下使用云端跑代码)(一)

本地训练或者跑一些代码,比如用深度学习处理行人识别的视频,比较慢,又没有足够的钱换硬件啥的(比如说博主,穷的一塌糊涂,没有钱配好的电脑),这时候考虑用一些算力平台来跑代码。 博主…