PCM编码
原文地址: https://blog.csdn.net/caoshangpa/article/details/51218994
我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值还要进行编码,就是用一组二进制码组来表示每一个量化值,然后记录到存储介质中,所有这些组成了数字音频的产生过程。
有损和无损
相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准。
对于我们最常说的“无损音频”来说,一般都是指传统CD格式中的16bit/44.1kHz采样率的文件格式,而之所以称其为无损,也是因为其包含了20Hz-22.05kHz这个完全覆盖人耳可闻范围的频响频率而得名。要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。
常见的无损音频格式有WAV、FLAC和APE。
## PCM编码和WAV格式的关系
单独的PCM编码文件是不能直接播放的,这种文件通常称为PCM裸流。PCM裸流经过封装后,就可以正常播放了。
WAV格式文件可以使用多种音频编码方式来压缩其封装的音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,几乎所有支持ACM规范的编码方式都可以为WAV的音频流进行编码。
在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美播放,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中。因为几乎所有的有损压缩格式都是从WAV格式压缩、转换而来,其实内部的编码依然是PCM,所以曾经很多MP3设备并不支持FLAC、APE、AAC等等格式,是因为它们不支持这些文件的解压缩,但是从没有一款播放器不支持WAV格式,因为WAV格式本身,就等于PCM码流。
最常见的WAV格式文是在PCM裸流的基础上加上44字节的文件头构成的,此时PCM的采样率是8KHz,量化位数是16位,当采用8位的量化位数时,文件头的长度可以达到58位。比如说Windows下自带的那个录音机录下的WAV,文件头有58个字节。
文章还包括PCM文件的制作,可以仔细查看
音频举例
44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.
44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);
22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;
人对频率的识别范围是 20HZ - 20000HZ,如果每秒钟能对声音做 20000 个采样,回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的,44100已是CD音质,超过48000的采样对人耳已经没有意义。这和电影的每秒 24帧图片的道理差不多。
每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:
1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;
2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;
4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.
如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.
How to convert between (most) audio formats in .NET(概念说的很清楚):https://www.codeproject.com/articles/501521/how-to-convert-between-most-audio-formats-in-net