技术分享| 融合通讯的架构介绍

news2024/12/23 13:05:00

在融合通讯中,我们经常听到如下一些术语:MCU服务,SFU架构,MESH架构,星形网络等等。很多客户听到这些数据都是一脸雾水,经常说我们就是要一个可以把多种设备拉到同一个会议中,怎么搞这么复杂。今天我们就来聊聊这些术语都从哪来的,分别都应用在什么地方,我们anyRTC又是如何做的。

一.Mesh 架构

由于WebRTC的普及,人们对于音视频通讯已不再像以前那么陌生,WebRTC本身是一个P2P的通讯模型,P2P就是点对点通讯,借助STUN/TURN服务可以实现任意网络下的通讯。对于P2P的通讯模型最常用的架构就是MESH:即多个终端之间两两相互连接,形成一个类网状结构。

在这里插入图片描述

如图所示B1、B2、B3、B4 四个终端进行多对多通信,当 B1 想要共享媒体(比如音频、视频)时,它需要分别向 B2、B3 和 B4 发送数据。同样的道理,B2 想要共享媒体,就需要分别向 B1、B3 和 B4发送数据,依次类推。这种方案对于终端少的情况比较友好,但是随着终端的数量增加,对各终端的带宽要求就会很高。

二.SFU架构

可以看出MESH架构并不太适合大规模的组会的场景,而SFU架构就应运而生。

在这里插入图片描述

SFU(Selective Forwarding Unit)架构:是由一个服务器和多个终端组成,但与 MESH相比,SFU在服务端对一路流进行广播,收到某个终端共享的音视频流后,就直接将该音视频流转发给房间内的其他终端,比如B1发布一路流到SFU,SFU就会把这路流分发给B2、B3 和 B4。同时SFU也不做音视频转码,对服务器的配置要求不高,实时性也很好,灵活度非常高,非常适合大规模的分发网络,这也就让SFU架构轻松成为目前市面上应用最普遍的架构。

三.MCU架构

这时候就有人会问,SFU架构已经看似完美了,其他架构就不需要了吧。答案非也,下面我们就介绍视频会议的鼻祖架构:MCU架构。

在这里插入图片描述

MCU(Multipoint Conferencing Unit)架构:由一个服务器和多个终端组成一个星形结构,与SFU不同,MCU是会做编解码和视频合成的。B1、B2、B3和B4将自己要共享的音视频流发送给服务器,服务器端会将在同一个房间中的所有终端的音视频流进行解码混屏,最终生成一个混合后的音视频流再发给各个终端,这样不同的终端就可以看到 / 听到其他终端的音视频了。由于增加了编解码,这会对服务器的配置要求非常高,所以MCU架构不太适合大规模分发,但这并不是说这个架构不重要。

MCU架构由于起步早,技术非常成熟,在硬件视频会议中应用非常广泛。同时MCU通过解码、再编码可以规避不同编解码设备的差异化,满足更多客户的集成和接入需求,提升用户体验和产品竞争力。还有就是接入MCU的终端都是一路上传一路接收,对于网络要求就不会那么高,用户体验相对较好。

四.总结

通过上面的介绍,我们了解了关于流媒体服务的这么多架构,anyRTC融合通讯系统,可以根据用户的实际需求交付不同的解决方案,这样才能更好的贴合实际的需求。

在这里插入图片描述

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

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

相关文章

《动手学深度学习》(PyTorch版)-第一章

TOC 第一章 1.1、一般编程要解决的问题 例如,如果我们要为一台微波炉编写一个用户界面 假设我们要编写一个电子邮件客户端。 1.2、深度学习要解决的问题 例如,假设我们想要编写一个判定一张图像中有没有猫的程序。这件事听起来好像很简单&#xff0…

PSI算法极简概述

什么是隐私求交PSI 隐私求交是多方安全计算中的密码学技术,它允许数据持有方通过比较加密集合计算得到交集,且任何一方都不会获得其他信息。PSI还存在一种变体,即CS场景。客户端可以获取其与服务器的交集但是服务器无法学习到该集合。如果在…

【Linux】gcc 的使用 | 动静态库 | make Makefile

程序翻译的过程 程序翻译的过程就是将C语言转换成二进制指令的过程。 预编译(完成 去注释、宏替换、头文件展开、条件编译等工作):gcc -E test.c -o test.i 编译(将C文本替换成汇编语言):gcc -S test.i -…

Excel实用技巧 如何将EXCEL中在同个单元格中的汉字和数字分开

右边字符串,左边数字 RIGHT(A1,LENB(A1)-LEN(A1)) LEFT(A1,2*LEN(A1)-LENB(A1)) 左边字符串,右边数字 LEFT(A1,LENB(A1)-LEN(A1)) RIGHT(A1,2*LEN(A1)-LENB(A1))

在Ubuntu环境下安装anaconda(很简单!!!!!)

前言:想要使用tensorflow-compression,但是这个在windows下不支持。那我只好去Ubuntu环境下的安装anaconda。但是!!!!!找了半天,都没找到好的安装教程,浪费了一下午,心态…

每天一点Python——day49

#第四十九天 # #元组的创建方式: #如图: #①直接小括号 a(python,world,98) print(a) print(type(a)) #也可以省略不写 a1python,world,98 print(a1) print(type(a1)) #为什么可以省略省略小括号呢 a3(python) print(type(a3)) #会发现是字符串类型 #因为…

Python 批量修改或替换文本内容

Python 批量修改或替换文本内容 前言源码效果图鸣谢 前言 遇到一个需要将一堆代码中部分文字替换或删除的需求。 需要处理像下面上百个脚本 需要删除每个脚本中类似下图的内容 可以用python批量处理所有的代码,并且删除我想要删除的内容。 源码 其中使用charde…

C#(四十九)之关于string的一些函数

1&#xff1a;startswith 字符串以。。。开头 // startswith 字符串以。。。开头string[] strArr { "asd","azx","qwe","aser","asdfgh"};for (int i 0; i < strArr.Length; i){if(strArr[i].StartsWith("as&qu…

Unity 新输入系统InputAction设置按键的阈值

输入阈值问题 在新的输入系统中&#xff0c;如果添加一个手柄按键只需要添加Pressed就够了&#xff0c;监听他的三个动作就可以得到按下&#xff0c;点击&#xff0c;抬起。 例如下面的代码&#xff1a; inputAction.Player.Trigger_Right.started OnRightTriggerStarted;i…

2023年07月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2023年07月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

国产开源流批统一的数据同步工具Chunjun入门实战

文章目录 概述定义特性 部署安装版本对应关系通用配置详解整体配置Content 配置Setting 配置 Local提交Standalone提交Json方式使用SQL方式使用MySQL SinkKafka Sink 概述 定义 Chunjun 官网 https://dtstack.github.io/chunjun-web/ 源码release最新版本1.12.8 Chunjun 文档地…

代码源 扫描线权值线段树 板子

矩形面积并&#xff08;存档&#xff09; 矩形面积并 - 题目 - Daimayuan Online Judge 题意&#xff1a; Code&#xff08;存档&#xff0c;还没写完&#xff09;&#xff1a; #include <bits/stdc.h>#define y1 Y1 #define int long longusing namespace std;const…

k8s的资源配置清单的管理操作

目录 一、资源配置清单1.1 初步认识资源清单中svc的重要配置项1.2 手动编写 svc资源配置1.3 手动生成模板&#xff0c;再编写资源清单1.4 写yaml太累怎么办&#xff1f;1.5 官网下载资源模板 一、资源配置清单 Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式&#…

HOT45-二叉树的右视图

leetcode原题链接&#xff1a;二叉树的右视图 题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,n…

django celery简单 例子

django celery简单 例子 https://docs.celeryq.dev/en/latest/django/first-steps-with-django.html pip list pip install Django4.2.3 pip install redis4.6.0 pip install celery5.3.1 pip install SQLAlchemy2.0.17 source demo1_venv/bin/activate django-admin start…

激光雷达在ADAS测试中的应用与方案

在科技高速发展的今天&#xff0c;汽车智能化已是必然的趋势&#xff0c;且自动驾驶汽车的研究也在世界范围内进行得如火如荼。而在ADAS测试与开发中&#xff0c;激光雷达以其高性能和高精度占据着非常重要的地位&#xff0c;它是ADAS测试与开发中不可缺少的组成。 一 激光雷达…

sendRedirect进行页面重定向无反应

问题 sendRedirect进行页面重定向无反应 详细问题 笔者使用ServletJSP作为技术框架&#xff0c;使用AJAX进行数据请求&#xff0c;后程序运行完成 response.sendRedirect("请求链接");并没有按照笔者预期&#xff0c;进行页面重定向 请求端核心代码 $.ajax({url…

nginx报403 Forbidden错误

nginx是以root启动的&#xff0c;将 "user nobody" 改为 "user root" 刷新一下配置&#xff1a; /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload

PCL点云处理之细小空洞填补 (一百九十八)

PCL点云处理之细小空洞填补 (一百九十八) 一、算法介绍二、具体实现1.代码2.结果一、算法介绍 点云扫描过程中,由于遮挡或其他原因,可能存在一些细小空洞,有可能造成数据处理上一些问题,这里介绍一种填补细小空洞的方法。具体方法和效果如下所示 二、具体实现 1.代码…

SpringBoot3【⑤ 核心原理】

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 1.1. 编写SpringApplicationRunListener 这个接口的实现类 1.2. 在 META-INF/spring.factories …