WAV和PCM的联系与区别

核心关系总结

一句话概括:PCM是一种最基础的、未经压缩的音频数据编码格式;而WAV是一种文件容器格式,它最常用于封装PCM音频数据。

可以把它们想象成:

  • PCM:是未经包装的“原材料”或“裸数据”(就像一块未经雕琢的木头)。

  • WAV:是一个标准的“包装盒”,这个盒子里最常装的就是PCM这种原材料,但也可以装其他东西。盒子上还贴有标签,说明了里面装的是什么、有多少、规格如何。


两者的联系

  1. 包含关系:在绝大多数情况下(99.9%),一个WAV文件内部存储的音频数据就是PCM流。当你创建一个“PCM格式”的WAV文件时,WAV文件的结构就是在PCM数据的前面加上一个文件头。

  2. 无损存储:由于PCM是未经压缩的,所以WAV文件封装PCM数据后,提供了一种非常简单直接的无损音频存储方式。音频从模拟信号转为数字信号(PCM)后,直接被存入WAV文件,没有经过任何有损压缩处理。

  3. 高质量音频的基石:在专业音频领域、音频编辑和CD唱片中,WAV/PCM组合是事实上的标准格式,因为它能提供最完整的音频信息。


两者的区别

 
 
特性 PCM WAV
本质 一种编码格式/数据布局 一种文件格式/容器
定义 脉冲编码调制,一种将模拟信号转换为数字信号的原始方法。 波形音频文件格式,由微软和IBM联合制定,是RIFF规范的一个子集。
文件结构 没有标准文件头,只有连续的、原始的音频数据流。 有标准的文件头结构,包含采样率、位深度、声道数、数据大小等关键信息。
可识别性 纯PCM数据流无法被媒体播放器直接识别,因为不知道其参数(采样率等)。 带有完整文件头,可以被各种软件、播放器和操作系统直接识别和播放。
灵活性 只能表示一种特定的音频编码。 理论上可以封装多种编码格式的音频,如ADPCM、MP3等,但最常见、最标准的是封装PCM。
常见扩展名 .pcm (不常见) 或没有特定扩展名。 .wav

深入理解:从数据到文件

让我们通过一个音频的诞生过程来理解它们:

  1. 采样与量化(产生PCM数据)

    • 麦克风捕捉到连续的模拟声波。

    • 音频接口(声卡)以固定的时间间隔(例如每秒44100次,即44.1kHz采样率)对声波进行“采样”。

    • 每次采样都会测量声波的振幅,并将其转换为一个数字值(例如用16位二进制数表示,即65,536个可能的电平)。

    • 这一系列按时间顺序排列的数字值,就是PCM数据。它已经是一串数字信号了,但还没有任何描述信息。

  2. 封装(创建WAV文件)

    • 为了能让播放器知道这串PCM数据的参数(采样率是44.1kHz还是48kHz?位深度是16bit还是24bit?是单声道还是立体声?),我们需要给它加上一个“说明书”。

    • WAV文件格式就是在PCM数据的前面加上一个文件头

    • 文件头里明确写明了:

      • 音频格式代码(例如,1 代表PCM)。

      • 声道数(1为单声道,2为立体声)。

      • 采样率(如44100)。

      • 位深度(如16)。

      • 数据部分的大小。

    • 这个 “文件头 + PCM数据块” 的组合,就构成了一个完整的、可以被正确解读的.wav文件

举例说明

  • 你从声卡直接录制的“原始数据”:是PCM流。如果你把它直接保存到硬盘,没有加文件头,很多播放器会无法播放,因为你必须手动告诉播放器它的参数。

  • 你用Audacity或Adobe Audition导出的“WAV文件”:是包含了PCM数据的WAV容器。你可以把它发给任何人,在任何设备上播放,因为文件头里已经包含了所有必要信息。

 

wav文件头中, 文件类型标识("RIFF"、"WAVE"),是什么意思
 
 
 
 

好的,这是一个非常核心的问题,理解了这两个标识,你就理解了WAV文件结构的基础。

简单来说:

  • "RIFF" 标识了这个文件是一个遵循RIFF标准的容器文件

  • "WAVE" 标识了这个RIFF容器里装的是波形音频数据

让我们来详细分解:


1. 文件类型标识 "RIFF"

"RIFF" 的全称是 Resource Interchange File Format(资源交换文件格式)。

  • 它是什么? 它是一种由微软和IBM在1991年共同制定的元文件格式(容器格式)。它的设计目的是为了在不同平台和应用程序之间方便地交换多种类型的多媒体数据。

  • 它的结构特点: RIFF文件的基本构建块叫做 "区块"。整个文件就是由一个个嵌套的区块组成的。

  • "RIFF" 区块: 每个RIFF文件的开头都是一个特殊的、最大的"RIFF区块"。这个区块的起始4个字节就是固定的ASCII字符 'R''I''F''F',这就是你看到的 "RIFF" 标识。它向解析器宣告:“注意!我是一个RIFF格式的文件,请按照RIFF的规则来读取我。”

总结:"RIFF" 是文件的“总纲领”,说明了整个文件的组织结构。


2. 文件格式标识 "WAVE"

紧跟在 "RIFF" 标识和整个RIFF区块大小信息之后的4个字节,就是 "WAVE" 标识。

  • 它是什么? 这是 "表单类型" 或 "格式类型"。它具体指明了这个RIFF容器里装的是哪一类数据。

  • "WAVE" 表示里面装的是音频数据

  • "AVI "(注意有个空格)表示里面装的是音频视频交错数据(即AVI视频)。

所以,"WAVE" 标识的作用是** specialization**。它告诉程序:“虽然我是一个RIFF容器,但我不是一个通用的容器,我是一个专门用来存放WAVE音频的特定容器。”

总结:"WAVE" 是文件的“内容标签”,精确说明了容器内承载的数据类型是音频。


把它们放在一起:WAV文件头的结构

一个典型的WAV文件开头是这样的(前44个字节通常是文件头):

 
字节偏移 字段名称 大小(字节) 内容(示例) 解释
0-3 ChunkID 4 52 49 46 46 (ASCII: "RIFF") 文件标识:这是一个RIFF格式的文件。
4-7 ChunkSize 4 文件总大小 - 8 从下一个地址开始到文件结尾的总字节数(即整个文件大小 - 8字节)。
8-11 Format 4 57 41 56 45 (ASCII: "WAVE") 格式标识:这个RIFF文件里装的是WAVE音频数据。
12-15 Subchunk1ID 4 66 6D 74 20 (ASCII: "fmt ") "fmt " 子区块标识:接下来是格式描述信息。
16-19 Subchunk1Size 4 16 (对于PCM) 后面"fmt "区块数据部分的大小(不包括ID和Size本身)。
... ... ... ... 这里开始是具体的音频格式参数(如音频编码、声道数、采样率等)。
36-39 Subchunk2ID 4 64 61 74 61 (ASCII: "data") "data" 子区块标识:接下来是真正的音频数据。
40-43 Subchunk2Size 4 N 音频数据部分的字节数。
44 - ... Data N ... 真正的PCM音频数据从这里开始。

一个生动的比喻

你可以把WAV文件想象成一个贴着标签的盒子

  1. 盒子本身 是一个标准规格的包装箱(这相当于 RIFF 格式规范)。

  2. 箱子的最外面贴着一个大标签,写着 "RIFF",意思是“本箱子采用标准规格包装”。

  3. 在"RIFF"标签旁边,还有一个更具体的标签,写着 "WAVE",意思是“箱内物品为:音频”。

  4. 打开这个"WAVE"箱子,里面还有两个小盒子:

    • 一个盒子标签是 "fmt ",里面装着说明书(音频的格式参数:采样率、位深度等)。

    • 另一个盒子标签是 "data",里面装着真正的货物(PCM音频数据本身)。

总结

  • "RIFF":定义了文件的骨架和结构(一种容器规范)。

  • "WAVE":定义了文件的内容和用途(该容器内承载的是音频数据)。

正是这两个标识的组合,让软件和系统能够快速、准确地识别出:“哦,这是一个WAV音频文件”,并按照正确的规则去解析它后面的 "fmt " 和 "data" 区块,从而正确地播放出声音。

 

 

总结

  • PCM是“数据”本身,是数字音频的原始形态。

  • WAV是“文件”本身,是一种为方便存储和交换PCM数据而设计的包装。

因此,我们通常说“这个WAV文件是PCM编码的”,这准确地描述了两者的关系。在讨论音频时,WAV和PCM常常被混用,但在技术层面上理解它们的区别和联系是非常重要的。

posted @ 2025-10-22 23:10  FBshark  阅读(7)  评论(0)    收藏  举报