流媒体服务器SMS-语音对讲(二)

1.简介

        上篇文件介绍了流媒体与设备之间可能的交互场景,本文将介绍客户端或者web端与摄像头对讲的总体流程。

        老规矩,介绍一下本人的开源流媒体,点个star,有兴趣一起开发的朋友也可以联系本人:https://gitee.com/inyeme/simple-media-server

2.流程图

        本文以webrtc为例,其他的方式也可以,如websocket,tcp长连接等。

        主要流程:

  1. 用户在web端或者客户端点击语音对讲后: 1)触发信令接口,向摄像头发起对讲请求,将流媒体服务的ip,port以及协商的ssrc发给设备;2)与流媒体交互sdp(即rtc的offer和answer),获取流媒体的ip,port,ssrc等信息。注意,这两步没有严格先后顺序;客户端的rtc是发流和收流用同一个socket还是独立开来,看自己的业务;甚至摄像头发过来的语音可以丢掉,因为可以收听实时预览摄像头的流里的音频,看对讲业务与实时预览业务的实现情况而定
  2. 客户端向流媒体发送音频,流媒体通过ssrc识别出流id,注册到对讲管理对象里
  3. 摄像头向流媒体发送音频,流媒体通过ssrc识别出流id,注册到对讲管理对象里
  4. 对讲管理类,给注册到自己的媒体链接分配角色,如客户端的发送(接收)链接,摄像头的发送(接收)链接。将客户端的发送链接与摄像头的接收链接关联起来,反之也一样。这样音频数据就串起来了(多个接收和发送方时,可以用userid之类的,避免自己发送到自己就行)

3.时序图

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

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

相关文章

为什么我们需要用到空号检测

为什么需要空号检测 在我们进行群发短信营销和电话营销时,如果不提前对号码库进行空号筛选,那么会影响效率、浪费成本。 SUBMAIL 的空号检测,直接调用运营商的 API 接口进行数据对照,从而让手机号码的检测结果更加可靠。 空号检测…

Vercel deploy- Nextjs project error-URL link-env variable

Vercel deploy- Nextjs project error-URL link-env variable Error Check Database URL Check next-auth URL NEXTAUTH_URLhttps://yourappname.vercel.app/ 依次排查可能性 Application error: a server-side exception has occurred (see the server logs for more in…

sonobe:针对IVC的fold arithmetic电路实例

1. 引言 近日,arnaucube发推宣称 在EVM链(Optimistic)上验证了首个NovaCycleFold proof,对应开源代码实现见: https://github.com/privacy-scaling-explorations/sonobe(Rust Solidity) son…

Git基本使用教程(学习记录)

参考文章链接: Git教程(超详细,一文秒懂) RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理:更新或回退到历史上任何版本,数据备份共享代码:团队间共享代码,…

大数据的数据采集

大数据采集是指从各种来源收集大量数据的过程,这些数据通常是结构化或非结构化的,并且可能来自不同的平台、设备或应用程序。大数据采集是大数据分析和处理的第一步,对于企业决策、市场分析、产品改进等方面具有重要意义。以下是大数据采集的…

2024 年适用于 Mac 的 5 大免费录屏软件

要成为Mac的优秀屏幕录像机,捕获视频的高清质量和易于操作的界面是两个主要重要因素。此外,Mac上的付费屏幕录像机不仅可以输出高质量的屏幕捕获视频。您也可以在免费的视频捕获软件中获得类似的桌面录制服务。因此,如果您不需要以专业的方式…

Java 异常处理详解(如果想知道Java中有关异常处理的知识点,那么只看这一篇就足够了!)

前言:异常处理是 Java 编程中非常重要的一部分,它能够有效地捕获和处理程序运行中的错误,提高代码的健壮性和可靠性。本文将深入探讨 Java 中异常的概念、体系结构、抛出、解决方式以及如何自定义异常,并结合代码案例进行详细解释…

什么文档加密软件好用?迅软DSE加密软件你不会还不知道吧?

一、什么文档加密软件好用? 其中有迅软DSE文档加密软件等。 迅软DSE加密软件:让企业的创意成果、招投标文件、生产工艺、流程配方、研发成果、公司计划、员工信息等核心数据更安全。 多方面加密模式,有效防止数据泄密 透明无感知加密&…

数据结构C语言版 严蔚敏

下列关于数据的逻辑结构的叙述中,哪一个是不正确的(C)。 A、数据的逻辑结构是数据间关系的描述B、数据的逻辑结构抽象反映数据元素间的逻辑关系C、数据的逻辑结构具体反映数据在计算机中的存储方式 数据的逻辑结构是从逻辑关系上描述数据&am…

华为云Pass平台微服务治理

华为云Pass平台微服务治理 1. 快速体验 1.1 微服务结构 2. 搭建项目 远程调用 主启动类 RequestSchema指定controller注解并标注控制类名称 3. PASS平台 CSE ServiceComb接入华为云CSE 注意: 当你的接口出现变更,把微服务引擎服务目录重新删除&…

深入理解mysql中的各种超时属性

1. 前言 connectTimeout: 连接超时 loginTimeout: 登录超时 socketTimeout: Socket网络超时,即读超时 queryTimeout: sql执行超时 transactionTimeout:spring事务超时 innodb_lock_wait_timeout:innodb锁等待超时 netTimeoutForStreamingResults:mysql server网络回…

U盘感染病毒,不必急于扔掉!教你如何有效清除U盘中的病毒

U盘被感染了只能扔掉吗?随着信息时代的飞速发展,U盘已成为我们日常生活中不可或缺的存储设备。然而,在使用U盘的过程中,我们有时会遇到U盘被病毒感染的情况。面对这一问题,许多人可能会感到恐慌,甚至想要直…

Ubuntu22.04之解决:terminal使用alt+1/alt+2/alt+3失效问题(二百三十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

UML实现图-组件图

概述 组件图(ComponentDiagram)描述了软件的各种组件和它们之间的依赖关系。组件图中通常包含4种元素:组件、程序、包、任务,各个组件之间还可以相互依赖。 一、组件的表示法 组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。在一般情…

动物群体甲基化如何讲故事?

DNA甲基化是DNA化学修饰的一种形式,能够在不改变DNA序列的前提下,改变基因表达,从而使表型发生变化。DNA甲基化是一种非常保守的表观遗传修饰,其广泛存在于生物体内,在不同的物种间、相同物种不同环境,同一…

学完PMP,怎么应用到实际工作中?

学习理论知识只是第一步,其目的是为了在实际工作中能够提供帮助。我相信题主的问题也是许多人共同面临的。PMP的知识体系是专业项目管理所必须掌握的知识体系。俗话说,有备无患,具备专业的理论知识就是最好的准备。废话不多说,举几…

使用 zxing 生成二维码以及条形码

需求背景 前期在做项目的时候,有一个需求是说要生成一张条形码,并且呢将条形码插入到 excel 中去,但是之前一直没有搞过找个条形码或者是二维码,最后是做出来了,这里呢就先看看怎么生成,后面再抽时间来写写…

6.3 cf 944

Problem - C - Codeforces 思路 分四种情况&#xff0c;以12为分界点 &#xff08;紫色部分是最初思路&#xff0c;但不包含所有情况&#xff09; 只看在a<b c<d 时的图 代码 #include <bits/stdc.h> using namespace std; #define IOS ios::sync_with_stdio(…

web前端三大主流框架指的是什么

web前端三大主流框架是什么&#xff1f;前端开发师的岗位职责有哪些&#xff1f;这边整理了相关内容供大家参考了解&#xff0c;请各位小伙伴随小编一起查阅下面的内容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1.Angular Angular原名angularJS诞生…

OJ3376无尽的石头问题

答案&#xff1a; #include<bits/stdc.h> using namespace std; const int N10e7; int fx(int n) {int sum0;while(n){sum(n%10);n/10;}return sum; } int main() {int t,n,x;cin>>t;while(t--){cin>>n;int count0;for(int i1;i<N;){if(in){cout<<…