音视频实时通话解决方案

news2024/11/24 15:41:39

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.coloradmin.cn/o/893064.html

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

相关文章

数学建模之“聚类分析”原理详解

一、聚类分析的概念 1、聚类分析(又称群分析)是研究样品(或指标)分类问题的一种多元统计法。 2、主要方法:系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。这里主要介绍系统聚类法…

mmdetection-FasterRcnn的四层输出修改

1、 num_outs5 改为 num_outs4 2、 FPN的输出改为四层 outs [H3, H4, H5, H6] 3、strides删除一个:strides[4, 8, 16, 32]), 就可以了

【LeetCode】字符串匹配

字符串匹配问题 常见的字符串匹配算法包括暴力匹配、 Knuth-Morris-Pratt 算法、Boyer-Moore算法、Sunday 算法等 解题 思路 1: 两个指针各指向两个字符串的起始位置,先判断,两个字符串的第一个字符是否相同,如果相同的话,则将两个指针往下移动,并且判断较短字符串的下一个字符…

上海虚拟展厅制作平台怎么选,蛙色3DVR 助力行业发展

引言: 在数字化时代,虚拟展厅成为了企业宣传的重要手段。而作为一家位于上海的实力平台,上海蛙色3DVR凭借其卓越的功能和创新的技术,成为了企业展示和宣传的首选。 一、虚拟展厅的优势 虚拟展厅的崛起是指随着科技的进步&#x…

sass笔记

声明变量 通过$标识符进行命名及引用混合器 类似vue中的函数 通过 mixin标识定义 include 标识调用& 父选择器标识extend 进行继承可嵌套可导入 通过 import 文件位置’ 、进行导入 <style> //1 声明变量 $name: 15px; $color: skyblue;mixin border-radius($num) {/…

Linux配置Nginx SSL支持Https配置教程

Linux Nginx配置SSL 检查是否安装ssl模块安装SSL配置SSL证书 继承上篇 Linux安装Nginx 检查是否安装ssl模块 执行&#xff1a;./nginx -V命令 如果有输出--–with-http_ssl_module则说明已安装好SSL模块 安装SSL 进入安装目录/usr/local/nginx-1.22.1 执行安装命令&#xf…

软考笔记——9.软件工程

软件工程的基本原理&#xff1a;用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清除的审查、开发小组的人员应少而精、承认不断改进软件工程事件的必要性。 软件工程的基本要素&#xff1a;方法、工具、过程 软件生…

【005】ts学习笔记【函数扩展】

函数扩展 参数类型 //注意&#xff0c;参数不能多传&#xff0c;也不能少传 必须按照约定的类型来 const fn (name: string , age : number ) : string > {return name age }let desc fn( "张三", 18) console.log(desc)可选参数与默认值 //可选的参数 和 默…

爬虫工作中代理失效了怎么处理?

Hey&#xff01;亲爱的爬虫小伙伴们&#xff0c;是不是经常在爬虫的工作中遇到代理IP失效的问题&#xff1f;别着急&#xff0c;今天我来分享一些应对代理失效的妙招&#xff01;这些方法简单易行&#xff0c;让你爬虫顺利进行. 一、为什么代理会失效&#xff1f; 在爬虫过程…

百度工程师浅析强化学习

作者 | Jane 导读 本文主要介绍了强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#xff09;的基本概念以及什么是RL。强化学习让智能体通过与环境的交互来学习如何做出决策&#xff0c;以获得最大的累积奖励。文章还介绍了策略梯度&#xff08;Policy Gradient&a…

【golang】结构体及其方法的使用(struct)

函数是独立的程序实体。我们可以声明有名字的函数&#xff0c;也可以声明没名字的函数&#xff0c;还可以把它们当做普通的值传来传去。我们能把具有相同签名的函数抽象成独立的函数类型&#xff0c;以作为一组输入、输出&#xff08;或者说一类逻辑组件&#xff09;的代表。 …

onvif中imaging setting图像画质总结!

前言&#xff1a; 大家好&#xff0c;今天给大家来分享一篇关于图像质量的内容&#xff0c;这个内容是我在做onvif中的imaging setting的时候&#xff0c;关注到里面有关于: brightness(亮度)color saturation(色彩饱和度)contrast(对比度)sharpness(锐度)white balance(白平衡…

手机技巧:推荐一款手机省电、提升流畅度APP

目录 软件详情 基本介绍 软件功能 软件特色 使用方法 软件对比 结论 今天给大家推荐一款手机省电、提升流畅度APP&#xff0c;感兴趣的朋友可以下载一下&#xff01; 软件详情 黑阈app是一款非常实用的系统优化类手机APP。使用它能够禁止软件后台运行耗电&#xff0c;既…

Kafka 什么速度那么快

批量发送消息 Kafka 采用了批量发送消息的方式&#xff0c;通过将多条消息按照分区进行分组&#xff0c;然后每次发送一个消息集合&#xff0c;看似很平常的一个手段&#xff0c;其实它大大提升了 Kafka 的吞吐量。 消息压缩 消息压缩的目的是为了进一步减少网络传输带宽。而…

能耗管理系统在大型机场中的应用

摘要&#xff1a;国家倡导绿色环保&#xff0c;新能源电动汽车应运而生&#xff0c;使用清洁能源代替常规能源&#xff0c;而且不会污染自然环境&#xff0c;减少消耗&#xff0c;资源得以很好利用。汽车使用新能源&#xff0c;成本有所减低&#xff0c;而且环境效益显著。所以…

CI/CD入门(二)

CI/CD入门(二) 目录 CI/CD入门(二) 1、代码上线方案 1.1 早期手动部署代码1.2 合理化上线方案1.3 大型企业上线制度和流程1.4 php程序代码上线的具体方案1.5 Java程序代码上线的具体方案1.6 代码上线解决方案注意事项2、理解持续集成、持续交付、持续部署 2.1 持续集成2.2 持续…

Docker安装RabbitMQ服务端

使用docker安装RabbitMQ服务端 1、搜索镜像 docker search rabbitmq2、拉取镜像 默认拉取最后一个版本&#xff0c;可以在后面加版本号拉取指定版本 docker pull rabbitmq 3、运行镜像 docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 rabbitmq4、查看…

知识储备--基础算法篇-二分搜索

1.前言 最近准备开始刷算法题了&#xff0c;搜了很多相关的帖子&#xff0c;下面三个很不错&#xff0c; 计算机视觉秋招准备过程看这个&#xff1a;​​​​​​计算机视觉算法工程师-秋招面经 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/399813916 复习深度学习相关…

CSS中的字体属性有哪些值,并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ font-style⭐ font-weight⭐ font-size⭐ font-family⭐ font-variant⭐ line-height⭐ letter-spacing⭐ word-spacing⭐ font⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专…

系统架构师---软件重用、基于架构的软件设计、软件模型

目录 软件重用 构件技术 基于架构的软件设计 ABSD方法与生命周期 抽象功能需求 用例 抽象的质量和业务需求 架构选项 质量场景 约束 基于架构的软件开发模型 架构需求 需求获取 标识构件 需求评审 架构设计 架构文档 架构复审 架构实现 架构演化 前言&…