webrtc音频模块介绍(一) 音频引擎的架构

ops/2024/11/28 3:03:35/

音频引擎的架构图

  • ADM位于最下层,直接于各种系统的音频设备打交道。
  • 音频引擎的音频处理模块包括: 音频编解码,Mixer(混音),AudioProcess(3A算法)。

音频引擎的数据流转图

音频引擎全局只有一个,由所有的call对象所共享(一个pc对象对应一个call对象),各个call中的stream都会放在引擎的AudioState对象中。

  • 蓝色箭头是播放时音频流的流程,AudioDeviceBufferAudioTransportMixer中取混音后的数据,Mixer从各AudioReceiveStream取数据混音。 音频数据最终会通过ADM的回放接口播放。
  • 红色箭头是采集音频的流程。
  • 采集的音频只有一个,采集的音频会向多个端发送数据。
  • 接收的音频有多个,多个音频会经过混音变成一个。

音频引擎中的核心对象

  • AudioDeviceModule就是ADM,与系统中的音频设备打交道。
  • AudioProcessing 音频处理算法(3A算法)。
  • AudioMixer音频混音。
  • AudioState是一个对象管理及音频数据流转。它管理其它三个对象,并且管理所有的call对象中AudioStream
  • 音频编解码对象,AudioEncoderFactoryAudioDecoderFactory


http://www.ppmy.cn/ops/137244.html

相关文章

Git的使用_仓库管理_CI/CD介绍

文章目录 一、Git的基础知识一-1、什么是GitLinux命令行的git的简易安装Git项目的组成Git的基本工作流程Git文件的三种状态 一-2、存储库远程存储库与本地存储库创建存储库git init命令的使用方法1. 初始化一个新的 Git 仓库2. 在指定目录初始化一个新的 Git 仓库3. 初始化一个…

创建者模式-单例模式

单例设计模式(Singleton Pattern)是一种常见的设计模式,它确保一个类只有一个实例,并提供全局访问点。使用单例模式时,我们通常需要保证以下几点: 只有一个实例:类的实例是唯一的。提供全局访问…

计算机网络习题解答--个人笔记(未完)

本篇文章为关于《计算机网络-自顶向下方法第七版》的阅读总结和课后习题解答(未完待续) 第二章: cookie:(这里是比较老版本的HTTP,具体HTTPs是怎么实现的不是很清楚)cookie的原理其实很简单。就是在HTTP消息头上又多…

wordpress使用Markdown语法写的文章图片显示不正常,记录一次折腾之旅

wordpress使用Markdown语法写的文章图片显示不正常,记录一次折腾之旅 当我把wordpress站点地址改成域名之后,wordpress上写的文章是使用Markdown语法进行写作的,但是Markdown引用的图片就会加载不出来,但如果把站点地址改成局域网的IP,所有的一切都显示正常了。除非我把图…

算法学习笔记(十):位运算、数论等

一.位运算基础 集合与集合之间的位运算 集合和元素 常用函数 1.使两个整数相等的位更改次数 给你两个正帧数 n 和 k,你可以选择 n 的二进制表示 中任意一个值为 1 的位, 并将其改为0,返回使得 n 等于 k 所需要的更改次数,如无法实…

计算机网络socket编程(4)_TCP socket API 详解

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(4)_TCP socket API 详解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论&…

[ 渗透测试面试篇-3 ] Getshell常见方法总结

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

RGB/INT8 输入注意事项

01 技术背景 在大多数情况下,我们都推荐用户在编译处理图像任务的模型时,将 input_type_rt 参数配置 nv12,这是考虑到视频通路传来的数据通常都是 nv12 类型,这样配置可以最大化地节约耗时,提高全流程的处理效率。 但…