2024年最新【Audio音频开发】音频基础知识及PCM技术详解_audio pcm(1),字节跳动超高难度三面大数据开发程序员面经

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

采样位数通常有8bits16bits两种,采样位数越大,所能记录声音的变化度就越细腻,相应的数据量就越大。

8bits为低品质,16bits为高品质,16bits最为常见。

5.3 声道数

声道数(Channels):又称为通道数,指的是:能支持不同发声的音响个数,它是衡量音响设备的重要指标之一。

Tip:

  • 单声道的声道数为1个声道;
  • 双声道的声道数为2个声道;
  • 立体声道的声道数默认为2个声道;
  • 立体声道(4声道)的声道数为4个声道。

5.4 音频数据大小计算

知道上面三个概念,我们就能够计算出来一个原始的音频文件所占用空间大小了。

空间大小

(

B

y

t

e

)

=

采样频率

(

h

z

)

时长

(

s

)

采样位数

(

b

i

t

)

声道数

/

8

空间大小(Byte)=采样频率(hz) * 时长(s) * 采样位数(bit)*声道数/8

空间大小(Byte)=采样频率(hz)∗时长(s)∗采样位数(bit)∗声道数/8

5.5 量化

量化: 量化就是通过四舍五入的方法将采样后的模拟信号转换成一种数字信号的过程。

对于采样来说,就是在时间轴上对信号数字化

对于量化来说,就是在幅度轴上对信号数字化

通过采样时测的的模拟电压值,要进行分级量化,按整个电压变化的最大幅度划分成几个区段,把落在某区段的采样到的样品值归成一类,并给出相应的量化值。

img

5.6 其他参数相关
  • 帧(Frame):一个声音的基本数据单元,其长度为采样位数和通道数的乘积
  • 周期(Period Size)音频设备一次处理所需要的帧数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。硬件缓冲传输单位,即完成这么多采样帧的传输,就会回馈一个中断。

在这里插入图片描述

  • Buffer Bytes: 一个应用Buffer有多少个字节,DMA缓冲区大小。

因为Buffer Size由应用设置,其可大可小,若其太大,则传输的延时太大,所以对此进行分片,提出Period的概念。overrun,录制时,数据都满了,应用来不及取走;underrun,需要数据来播放,应用来不及写入数据

  • Sign :表示样本数据是否是有符号位
  • Byte Ordering:字节序,表明数据是小端(little-endian)存储还是大端(big-endian)存储,通常均为little-endian
  • nteger Or Floating Point :整形或者浮点型,大多数格式的PCM样本数据使用整形表示。
  • **交错模式:**数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录第一帧的左声道样本和右声道样本,再开始第2帧的记录…
  • 非交错模式: 首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本。

以FFmpeg中常见的PCM数据格式s16le为例:它描述的是有符号16位小端PCM数据。

s表示有符号,16表示位深,le表示小端存储。

6、PCM数据流

对于PCM数据都是一些文本化的描述,那么一段PCM格式的数据流怎么表示的呢?

以8-bit有符号为例,长得像这样:

+---------+-----------+-----------+----
 binary 	| 0010 0000 | 1010 0000 | ...
 decimal	| 32        | -96       | ...
+---------+-----------+-----------+----  

每个分割符"|"分割字节。因为是 8-bit 有符号表示的采样数据,所以采样的范围为-128~128

OK,对于PCM数据流的存储而言,上面仅仅只是单声道。对于多声道的PCM数据而言,通常会交错排列,就像这样:

+---------+-----------+-----------+-----------+-----------+----
     FL 	|     FR    |     FL 	  |     FR    |     FL 	  |    
+---------+-----------+-----------+-----------+-----------+----


对于8-bit有符号的PCM数据而言,上图表示第一个字节存放第一个左声道数据(FL),第二个字节放第一个右声道数据(FR),第三个字节放第二个左声道数据(FL)

7、编码

一个完整的音频,经过采样和量化后的信号,需要将它转化为数字编码脉冲,这一过程称为编码。

编码简单来说,就是按一定格式记录采样和量化后的数字数据

PCM技术仅仅包含采样和量化,并不包含编码部分,这里仅简单介绍。

7.1 音频编码协议ACC

AAC(Advanced Audio Coding) 高级音频编码,是一种声音数据的文件压缩格式。AAC分为ADIFADTS两种文件格式。

  • ADIF(Audio Data Interchange Format): 音频数据交换格式。这种格式的特征是只有音频数据最前面具有头字节,音频数据流中间没有头字节。因此它的解码只能在头字节处开始进行。故这种格式常用在磁盘文件中。
  • ADTS(Audio Data Transport Stream): 音频数据传输流。这种格式的特征是它每一单元音频数据都有一个header字节,解码可以在这个流中任何位置开始。

7.2 压缩

PCM数据是最原始的音频数据,完全无损,所以PCM数据虽然音质优秀但体积庞大,为了解决这个问题先后诞生了一系列的音频格式,这些音频格式运用不同的方法对音频数据进行压缩,其中有无损压缩和有损压缩两种。

  • 无损压缩:将数据压缩之后,通过解码还能还原成与原始数据一模一样的数据为无损压缩。
    • ALAC、APE、FLAC
  • 有损压缩:消除冗余信息,如人耳能听到的声音为20Hz - 20000Hz 以内,所以可以将此范围外的声音去除掉。
    • MP3、AAC、OGG、WMA

7.3 其他概念
  • 码率:(也成位速、比特率) 是指在一个数据流中每秒钟能通过的信息量,代表了压缩质量。

比如MP3常用码率有128kbit/s、160kbit/s、320kbit/s等等,越高代表着声音音质越好。

MP3中的数据有ID3和音频数据组成,ID3用于存储歌名、演唱者、专辑、音轨等我们可以常见的信息。

码率

=

采样率

采样位数

声道数

码率 = 采样率 * 采样位数 * 声道数

码率=采样率∗采样位数∗声道数

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

码率=采样率∗采样位数∗声道数

[外链图片转存中…(img-lOALZ68N-1714912829634)]
[外链图片转存中…(img-jcVrKjl7-1714912829635)]
[外链图片转存中…(img-c1Ho92S7-1714912829635)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值