音视频实时通话解决方案

1、问题提出

想要实现音视频通话,对于大部分人可能会觉得很难,但是实际上,有些事情并没有大家想的那样困难,只要功夫深,铁杵磨成针。
机缘巧合下,在业务中,我也遇到了一个业务场景需要实现音视频通话,我们不可能自己从零开始干,我本次用到的核心是WebRTC。

2、WebRTC简介

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

WebRTC 浏览器与终端兼容性
WebRTC 在所有现代浏览器中都可用。Google Chrome、Mozilla Firefox、Apple Safari 和 Microsoft Edge 都支持它。也可以将其集成到应用程序或嵌入式设备中,而完全不需要浏览器。

3、技术架构图

在这里插入图片描述
整个音视频通讯过程如上图图所示。

  1. 通过本地调用音频或摄像头,获取音视频流;
  2. WebRTC两个客户端分别与Signal 服务器建立连接 ,Signal 服务端为WebRTC端分配房间/加入指定的房间,并返回WebRTC房间信息;
  3. WebRTC端会创建RTCPeerConnection媒体连接,这个连接需要知道双方的流媒体数据格式才能进行后续的数据传输,它们通过Signal 服务端进行SDP媒体协商;
    (1)WebRTC-1先创建RTCPeerConnection媒体连接,并生成Offer请求(包含了它这个客户端支持的的媒体格式等内容),并将其设置到RTCPeerConnection的LocalDescription,然后向Signal 服务器发送Offer 请求,由其转发给WebRTC-2端。
    (2)WebRTC-2端收到了Offer请求,也会创建RTCPeerConnection媒体连接,并将Offer请求中对端支持的SDP 设置到RTCPeerConnection的RemoteDe

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于python+django+mysql的校园影院售票系统(可做计算机毕设)

开发柚子校园影院,不仅可以改善用户查看信息难的局面,还可以提高管理效率,同时也可以增强系统的竞争力。利用柚子校园影院的可以有效地提高系统的人事的效率和信息化水平,快速了解信息更新及服务的进度。这既可以确保系统服务的品…

什么是服务网格,为什么 Kubernetes 需要它?

​企业现在热衷于采用微服务架构,因为它具有敏捷性和灵活性。容器和作为首选的容器编排工具—Kubernetes的兴起使得从单体架构向微服务架构的转变变得更加容易。然而,在大规模使用微服务架构时出现了一系列新的挑战: DevOps和架构师很难管理…

Shell学习笔记之基础部分

Shell基础: 查看操作系统支持的shell: [rootrhel9 ansible]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bashShell的基本元素: 声明:声明用哪个命令解释器来解释并执行当前脚本文件中的语句,一般写的…

期待相聚|官宣!2023 Google 谷歌开发者大会来了

对 5 月 Google I/O 大会 记忆犹新?更多精彩即将来临! I/O Connect 系列活动的环球之旅 经历迈阿密,阿姆斯特丹,班加罗尔 将技术灵感带到中国 2023 Google 开发者大会 (I/O Connect|China)…

LVS负载均衡集群

目录 1、什么是集群(含义) 2、集群使用在哪一个场景 3、集群的分类 4、负载均衡器的集群架构 5、负载均衡器的群集的工作模式 1、地址转换(NAT模式) 2、IP隧道(TUN模式) 3、直接路由(DR模式) 6、关于LVS的虚拟服务器 7、LVS的负载均衡器的调度算法 8、LVS组成和作用 …

【云原生、k8s】Calico网络策略

第四阶段 时 间:2023年8月17日 参加人:全班人员 内 容: Calico网络策略 目录 一、前提配置 二、Calico网络策略基础 1、创建服务 2、启用网络隔离 3、测试网络隔离 4、允许通过网络策略进行访问 三、Calico网络策略进阶 1、创…

vue动态修改audio地址

问题:点击后替换url地址,实现了,但是播放器依旧没有反应。 解决:vue中动态替换只是替换了地址,并没有告诉audio标签是否要执行,执行什么操作。要load后才能让它知道,是在喊他,他需求…

STM32--TIM定时器(2)

文章目录 输出比较PWM输出比较通道参数计算舵机简介直流电机简介TB6612 PWM基本结构PWM驱动呼吸灯PWM驱动舵机PWM控制电机 输出比较 输出比较,简称OC(Output Compare)。 输出比较的原理是,当定时器计数值与比较值相等或者满足某种…

飞凌嵌入式与您相约艾睿电子技术解决方案展

艾睿电子公司将在深圳主办年度“技术解决方案展”,2023 年展示会将以“启航未来,携手共进”为主题,汇聚百家电子/半导体大厂、制造商、供应商、方案公司及创科公司,展示最前沿的产品和领先技术解决方案,如何能驱动人、…

微服务-Nacos(配置管理)

配置更改热更新 在Nacos中添加配置信息&#xff1a; 在弹出表单中填写配置信息&#xff1a; 配置获取的步骤如下&#xff1a; 1.引入Nacos的配置管理客户端依赖&#xff08;A、B服务&#xff09;&#xff1a; <!--nacos的配置管理依赖--><dependency><groupId&…

render和h函数的使用

// 如果没有配置项&#xff0c;则可以省略不写 {}h("div", [h(h-tooltip, // 在tooltip中进行改造// ----- h-tooltip 的配置项 -----Start{props: {placement: "top-start",// content: 提示内容,transfer: true},style: {overflow: hidden,text-overflow…

阿里巴巴面试高频题:JVM内存模型通俗解释!

大家好&#xff0c;我是你们的小米&#xff0c;今天我要和大家一起来探讨一个热门话题——JVM内存模型&#xff01;作为计算机科班出身的小米&#xff0c;一直对技术充满热情&#xff0c;喜欢和大家分享各种有趣的知识。最近在准备阿里巴巴的面试时&#xff0c;遇到了一个非常有…

RestTemplate

RestTemplate介绍 RestTemplate是Spring提供的用于访问RESTful服务的客户端&#xff0c;RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。RestTemplate默认依赖JDK提供http连接的能力&#xff08;HttpURLConnection&#xff09;&#xff0c;…

docker-php扩展

生成扩展骨架 环境&#xff1a;docker-compose、php74 1.本地要有一份 php-src git clone https://github.com/php/php-src.git cd php-src git checkout PHP-7.4.52.\www\php-src\ext可以看到有一个 ext_skel.php 文件 3.通过ext_skel.php脚本创建了一个hello扩展&#xf…

SpringBoot复习:(51)默认情况下DataSource是怎么创建出来的,是什么类型的?

DataSource是通过DataSourceAutoConfiguration创建的&#xff0c;这个类代码如下&#xff1a; 可以看到DataSourceAutoConfiguration有个静态内部类PooledDataSourceConfiguration,在这个类上有个Import注解&#xff0c;导入了DataSourceConfiguration.Hikari这个类&#xff0…

数据结构——链表详解

链表 文章目录 链表前言认识链表单链表结构图带头单循环链表结构图双向循环链表结构图带头双向循环链表结构图 链表特点 链表实现(带头双向循环链表实现)链表结构体(1) 新建头节点(2) 建立新节点(3)尾部插入节点(4)删除节点(5)头部插入节点(6) 头删节点(7) 寻找节点(8) pos位置…

Unknown tree updater grow_gpu_histb报错

报错显示&#xff1a;由于xgboost的问题而报错 报错显示&#xff1a;Unknown tree updater grow_gpu_histb 原因是 XGBoost 在尝试使用 GPU 加速时无法识别指定的树更新器。也就是当前xgboost版本中没有grow_gpu_histb组件&#xff0c;所以需要安装正确的版本。 经搜索&#…

银河麒麟服务器v10 sp1 .Net6.0 上传文件错误

上一篇&#xff1a;银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前&#xff0c;在Linux服务器上安装 libgdiplus 即可解决&#xff0c;libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者&#xff0c;是开源mono项目。地址…

ios swift5 collectionView 瀑布流(两列)

文章目录 1.瀑布流1.1 demo地址1.2 记得把部署的最低版本由8改成11,13甚至更高。不然编译会报错 2.动态计算图片和文字的高度 1.瀑布流 1.1 demo地址 CollectionViewWaterfallLayout - github 1.2 记得把部署的最低版本由8改成11,13甚至更高。不然编译会报错 2.动态计算图片和…

问道管理:机器人概念走势活跃,新时达涨停,拓斯达、丰立智能等大涨

机器人概念17日盘中走势活跃&#xff0c;到发稿&#xff0c;拓斯达大涨18%&#xff0c;昊志机电涨近16%&#xff0c;丰立智能涨超13%&#xff0c;步科股份、优德精细涨超10%&#xff0c;新时达涨停&#xff0c;天玑科技、兆龙互联、中大力德涨逾9%。 消息面上&#xff0c;8月16…
最新文章