百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何利用WebRTC创建视频聊天应用程序

ccwgpt 2024-10-30 01:34 76 浏览 0 评论

常见的视频应用程序都会利用一项技术——WebRTC。 WebRTC是一项新技术,它允许开发人员通过日常使用的浏览器,在网络上交换数据甚至媒体。考虑到此类功能仅作为插件(如嵌入式插件)可用,不可不称其为十年来的巨大技术变革。

即使你没听说过WebRTC,以前也可能用过它。Whatapps、Facebook、甚至Google handout里都有它的身影。WebRTC,又称网络实时通话,能让你在浏览器之间建立直接连接。这项技术都7年了,我才赶上这趟末班车。我设法创建了自己的WebRTC应用程序,以更好地理解该工具。

本文我将介绍一些有关WebRTC的基础知识:

1. WebRTC如何运作?

魔术实际上不是魔术。只是在黑暗之处迅速完成的一系列复杂手法。就像鸭子一样。它们看起来像在水面上优雅地滑行。但当你深入幕后,就会发现都是些稀松平常的方法。

2. 运行WebRTC需要哪些组件?

网络应用程序有其各自不同的组件,大多都是我们看不见的,例如服务器等。但是它们就像汽车引擎,开车时看不到它(除非你驾驶的是Doge Charger R / T),但这并不意味着发动机并不在工作。

3. STUN服务器的用途?

本节我们会详细介绍在整个过程中如何,以及何时需要STUN服务器。

4. TURN服务器的用途?

在本节中,我们会讲一下何时需要TURN服务器的。并非在所有情况下我们都需要它,如果你必须处理较少的直接用例,一个组件就够了。

5. 针对不同用例和优化的会议室容量,我们要用到哪些WebRTC架构?

说到WebRTC,它主要有四种类型的体系结构。当你使用zoom,你是否想过服务器是如何处理有160位成员及以下的会议呢?这不是魔术,实际上它需要传输大量数据,10分钟的会话就会产生数TB的数据。

为业务用例组建正确的架构,你就成功了一半。

6. 如何测试你的WebRTC和免费资源

在组建自己的WebRTC应用程序时,我找到了一些有趣的工具和资源,能和简单的WebRTC应用程序的不同组件相适配。

让我们开始回答这些问题吧!

1. WebRTC如何运作?

当第一次发起视频聊天,首先你需要向自己所在的房间发出信号。这种告诉其他人你已经就位的方式称为信令。就比如如果你是第一个来到派对的人,理论上你仍会打声招呼,但没人会回应罢了。

从技术上讲,信令是ICE 框架(Interactive Connectivity Establishment)的一部分,是相互查找,然后通过交换媒体信息来协调通信的过程。信令使用会话描述协议(SDP)来收集网络信息,例如用于媒体交换的IP地址和端口号。

作为开启和管理会话邀请的标准方法,会话描述协议(SDP) 以基于文本的格式体现浏览器的功能和首选项。

如果你的浏览器要连接到其他浏览器,要在SDP中交换的信息包含以下内容:

会话控制消息,用于打开或关闭通话;

错误消息;

媒体元数据,例如编解码器和编解码器设置,带宽和媒体类型;

密钥数据,用于建立安全连接;

网络数据,例如外界看到的主机IP地址和端口。

2. 要启动、运行WebRTC应用程序,需要哪些东西?

你需要一个用户界面。

你需要一个网络应用程序,该应用程序要能在加载或单击按钮时建立连接,然后显示同一个聊天室中你这一端发送的视频数据。

技术层面上来说,就是你要创建一个RTCPeerConnection,并将其发送到远程端存储在自己的电脑中。建立好网络应用后,你可以把网络应用程序托管在服务器中的某个位置,以便朋友可以公开访问它。

你需要一个服务器来发送信令。

还记得我们提到的信令吗?它用于向指定房间中的所有人提示你进入房间。当你进入时,会议室中现有的每个成员都将通过SDP记录你的细节和远程信息,并将其存储在他们的电脑上,同时也准备从你那里接收媒体数据。

技术层面上来说,WebRTC处理SDP信息的创建和处理,但不处理其发送和接收。因此这样的传输需要服务器。利用websocket服务器执行此传输和初始化是很常见的事情。

你需要一个STUN服务器。

该服务器用于检索远程端的公共IP地址。简单来说,就是我们每个人都有一个公共IP地址,并使用STUN服务器获取此信息。然后这些信息会成为你刚进入房间时需要发送给另一端的SDP信息的一部分。

你可能需要一个TURN服务器

如果你需要与你的远程端联系,但无法直接与其联系的话,TURN服务器可以作为媒介来为你传递消息。有网友在Quora中问到了这个问题,详细信息点此查看。

3. STUN服务器的用途?

即NAT会话穿越应用程序。双方都至少要了解其另一端的IP地址和分配的UDP端口。

无论使用哪种架构,我们都需要信令服务器来进行注册和显示状态。TURN服务器可以帮助我们遍历网络,并确保内部IP地址可以映射到外部公共ip地址。

STUN如何运作?

现在你能看到浏览器使用STUN服务器请求你的公共IP地址,平时我们是看不见的。这让我学到,魔术从来都不是真正的魔术,幕后有千变万化。如果你想学习魔术,就必须了解背后的这些事。

4. 什么是TURN服务器

中继NAT遍历是一种用于中继网络流量的协议。有时由于防火墙和一些网络相关的工具(也就是NAT),在你使用STUN服务器,设法检索远程对等方的公共IP地址时,你需要一个能公开访问网络,做你媒体中继的一个TURN服务器,这个过程有点像一个中间人帮你传递信息。

5. 如何扩展?4种关键架构供你选择

Mesh

在端对端的电话会议中共3个客户端,有2个连接会进行加密建立。各方都能保持联系。

Forwarding(转发)

选择性转发单元在会话中充当智能媒体中继的角色。每个客户端都会连接到SFU一次,以发送媒体。除自己以外的客户端都会再发送一次。这样每个客户端就有n个单向连接(n是已连接客户端的数量)了。尽管此体系结构的连接总数为n的平方,但客户端在连接初始化时仅加密一次,从而减轻了设备本身,尤其是手机的压力。

转发需要其他服务器基础结构,例如SFU等。但其效率很高。只要不激活记录或对数据进行解码,SFU不会尝试解密数据包。

Mixing(混合)

混合操作依赖于多点控制单元(MCU),该单元在会话中充当高功率媒体混合器的角色。如果每个客户端连接一次MCU,无论有多少客户端在连接,其都只需要处理一个从服务器发送和接收媒体信息的双向连接。

像转发一样,加密和上传也仅执行一次。现在下载和解密也是如此。这种方法在客户端上效率最高,但从服务器角度来看效率最低,因为解码、混合、编码和打包的解包操作完全要在服务器上执行,操作量很大,需要大量服务器资源才能实时完成。

对于有大量活跃用户的应用程序(例如网课)或设备特别受资源限制(例如带宽)的情况,大家可以考虑使用此方法。但这种体系结构要花费一些服务器成本。

Hybrid(混合)

顾名思义,混合体系架构是Mesh、Forwarding和/或Mixing的组合。你可以根据需求为参与者创建会话。

若是简单的两人通话,mesh设置非常简单,服务器资源需求小。

若是小组会议、广播和实时活动,Forwardin最合适。

若是较大的小组会议或电话集成,Mixing是最合适的的开放性选择。

如何使用Testrtc测试WebRTC

目前来看,WebRTC应用在进行拓展时总会出现问题,同时消耗大量数据。如果你打算扩展自己的webRTC应用,你需要考虑适当的体系架构,以及数据流量问题。

在有500名参与者的压力测试中,我们将其分成几组。其中,有5名参与者仅运行了6.5分钟。但该服务器实际上不到10分钟内就双向传输了52GB的媒体流量。

6. 资源

点击这里,你可以免费获取在webRTC实现中使用的STUN服务器,

我找到了一个讲述较全的youtube视频来帮你了解WebRTC的工作方式。webrtc相关的这些youtube视频都好多年了。WebRTC都有7年历史了,而我现在才掌握了这项技术。希望这篇文章能让你也了解这个“老”技术!

相关推荐

谷歌正在为Play商店进行Material Design改造

谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...

企业网站免费搭建,定制化建站CMS系统

科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...

您需要的 11 个免费 Chrome 扩展程序

来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...

户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案

  在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。  从其结构设计来看,矩形框架虽主要为适配紧凑空...

一个基于NetCore开发的前后端分离CMS系统

今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...

本地Docker部署ZFile网盘打造个人云存储

前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...

pcfcms企业建站系统 免费+开源的企业内容管理系统

项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...

【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...

java开源cms管理系统框架PublicCMS后台管理系统

一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...

一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!

一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...

《搜神札记》:不应磨灭的惊奇(小说《搜神记》)

□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...

《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)

“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...

《助人技术》第一章助人引论内容框架

第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...

AI助手重构读后感写作流程:从提纲到完整性思考的转换

大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...

图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)

做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...

取消回复欢迎 发表评论: