当前位置: 首页 > news >正文

【车载audio开发】【基础概念1】【音频基础概念通俗讲解】

AOSP 15 音频基础概念通俗讲解

在 Android 的音频系统(AOSP 15 中)里,开发者经常会遇到一些“硬核”术语,比如 channel、sample rate、format、frame、period_size 等。刚接触时,这些名词很容易混淆。下面我们通过生活中的例子,把这些概念讲清楚。


1. 声道(Channel)

  • 单通道(Mono):一个声道。例如,你用一个麦克风录下来的声音,只会有一条音轨。

  • 立体声(Stereo):两个声道(左声道 + 右声道)。耳机里听音乐时,常常会感觉某些乐器在左边,某些声音在右边,这是立体声的效果。

👉 类比:
单声道就像你在一个房间里用单只麦克风录下所有声音;
立体声就像你在房间左右各放一个麦克风,能感受到空间感。

在 AOSP 中,常见的声道数有:

  • CHANNEL_OUT_MONO(1 声道)

  • CHANNEL_OUT_STEREO(2 声道)

  • 甚至还有 5.1、7.1 多声道输出,用于影院或车机系统。


2. 采样率(Sample Rate)

定义:每秒钟对声音采样的次数。

常见的采样率:

  • 44.1 kHz(CD 音质)

  • 48 kHz(常见于视频和 Android 系统默认)

  • 更高的有 96 kHz、192 kHz(发烧级音频)。

👉 类比:
采样率就像拍照的“帧率”。

  • 如果你用每秒 10 张的帧率拍视频,动作会卡顿;

  • 如果你用每秒 60 张的帧率,画面就很流畅。
    音频也是一样,采样率越高,声音细节越多,但数据量也越大。


3. 格式(Format)

定义:每个采样点占用的位数。

常见格式:

  • 16 bit(常见)

  • 24 bit(高保真)

  • 32 bit float(专业音频处理)

👉 类比:
采样率决定你“拍多少张照片”,而格式决定你“照片的清晰度”。

  • 16 bit = 普通相机拍摄

  • 24 bit / 32 bit = 专业单反拍摄,能保留更多细节。

在 AOSP 中,用 AUDIO_FORMAT_PCM_16_BIT 等宏来表示。


4. 帧(Frame)

定义:一个 = 一次采样的所有声道样本。

举例:

  • 单声道(Mono):一帧就是 1 个采样点。

  • 立体声(Stereo):一帧包含 左声道样本 + 右声道样本

👉 类比:
帧就像一张“立体照片”:

  • 单声道 = 黑白照片

  • 立体声 = 彩色照片(需要两个通道一起看才完整)

在 Android 的 HAL 层,音频数据处理时基本单位就是“帧”。


5. period_size 和 period_count

这两个概念和 DMA(Direct Memory Access,直接内存访问)有关,是音频驱动和硬件打交道时的重要参数。

  • period_size:一次 DMA 传输的数据量(单位通常是帧数)。

  • period_count:DMA 一次环形缓冲区里有多少个 period。

👉 类比:
想象你在工厂流水线上装瓶水:

  • period_size 就像一次流水线传送的瓶子数量。

  • period_count 就像传送带分成几段,每段传输完后都会“打个点”,提醒工人检查。

在 AOSP 中:

  • period_size 决定 一次中断传输多少数据

  • period_count 决定 缓冲区里能存多少次 period
    通常二者配合起来决定 音频延迟系统稳定性


6. 举个完整的例子

假设我们在 Android 车机(AOSP 15)上播放音乐:

  • 声道:2(立体声,左/右扬声器)

  • 采样率:48000 Hz(每秒 48000 次采样)

  • 格式:16 bit(每个采样点 2 字节)

  • 一帧:立体声 → 左声道 2 字节 + 右声道 2 字节 = 4 字节

  • period_size:1024 帧(一次 DMA 传输 1024 帧 = 4096 字节)

  • period_count:4(DMA 缓冲区被分成 4 个 period,总缓冲区大小 = 4096 × 4 = 16 KB)

这样,音频驱动会每传输 1024 帧触发一次中断,系统就能有节奏地往缓冲区填数据,保证音乐连续不断。


7. 总结

  • Channel:声道数量(Mono / Stereo / 多声道)

  • Sample Rate:每秒采样次数(决定声音“流畅度”)

  • Format:每个采样点的位数(决定声音“清晰度”)

  • Frame:一次采样的所有声道样本(基本处理单位)

  • Period Size:一次 DMA 传输的帧数

  • Period Count:缓冲区包含多少个 period

这些参数最终决定了:

  • 音质(采样率 + 格式)

  • 空间感(声道数)

  • 延迟 & 流畅度(period_size + period_count)

在 AOSP 15 的 Audio 系统中,这些概念贯穿 HAL(Audio HAL)、Framework(AudioFlinger)、以及 App 的播放录制接口,是理解 Android 音频系统的第一步。


文章转载自:

http://xlJ1WlPL.grcfn.cn
http://sfQoe86k.grcfn.cn
http://pXSwrw7P.grcfn.cn
http://7X4znFrz.grcfn.cn
http://NA8b8fN6.grcfn.cn
http://a3rkH7ik.grcfn.cn
http://z6rrfCSc.grcfn.cn
http://rABh2nWQ.grcfn.cn
http://MblkUKqY.grcfn.cn
http://LeakeQ6M.grcfn.cn
http://mNaWprTg.grcfn.cn
http://lVT3ovi5.grcfn.cn
http://JUhdfZue.grcfn.cn
http://2ug5eLa1.grcfn.cn
http://dLd3pG9M.grcfn.cn
http://ZmAKCMR7.grcfn.cn
http://SfYIzFsw.grcfn.cn
http://2p1DZbsQ.grcfn.cn
http://B7c9SdXU.grcfn.cn
http://T0I2luU1.grcfn.cn
http://pKofNWpY.grcfn.cn
http://Bwpa0whR.grcfn.cn
http://tnCs79A6.grcfn.cn
http://t7RSCE53.grcfn.cn
http://R7cX7oTB.grcfn.cn
http://uXbRw6Jp.grcfn.cn
http://kWwnqc0E.grcfn.cn
http://qX2xC1bV.grcfn.cn
http://7hgyrCxS.grcfn.cn
http://a64uf7os.grcfn.cn
http://www.dtcms.com/a/383678.html

相关文章:

  • O3DE社区发布2505.0版本
  • VSCode 的 Run and Debug 下拉菜单都是怎么配置的,原理是什么?
  • Ligero 和 Brakedown PCS中的tensor product结构
  • 高效群签名方案与优化方法
  • [第一章] web入门—N1book靶场详细思路讲解(二)
  • 行优先 vs 列优先:性能差异揭秘
  • python把文件从一个文件复制到另一个文件夹
  • 平衡车 -- 遥控器
  • 深度学习(八):学习率
  • VSCode使用prettier插件进行格式化配置
  • 前后端分离项目如何解决跨域问题
  • IDEA使用Maven和MyBatis简化数据库连接(实现篇)
  • 【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
  • 正向代理与反向代理的异同
  • 从ENIAC到Linux:计算机技术与商业模式的协同演进——开源生态的崛起与重构
  • RTC驱动原理
  • MyBatis 的“魔法”:Mapper 接口是如何找到并执行 SQL 的?
  • 构建日志采集和分析平台
  • 《Unity+腾讯云TRTC故障排查指南:从日志盲区到线程死锁的全链路解析》
  • 笔记25.9.14(QueryWrapper,Builder ,Stream流处理,forEach)
  • 深入理解MySQL主从架构中的Seconds_Behind_Master指标
  • systemverilog如何解决不能使用变量索引来进行位选择的范围指定
  • 多语言编码Agent解决方案(1)-项目概述与架构
  • 【深度学习踩坑实录】从 Checkpoint 报错到 TrainingArguments 精通:QNLI 任务微调全流程复盘
  • 【愚公系列】《人工智能70年》019-语音识别的历史性突破(铲平技术高门槛)
  • webpack 配置文件中 mode 有哪些模式?
  • AI推理范式:从CoT到ReAct再到ToT的进化之路
  • webpack和Module Federation区别分析
  • Knockout.js Virtual Elements 详解
  • 【JavaSE五天速通|第三篇】常用API与日期类篇