wav文件格式学习

  |   0 评论   |   325 浏览

术语

PCM

PCM(Pulse Code Modulation, 脉冲编码调制),是一种编码方式,目标是将模拟信号转换为数字信号。具体分为三个阶段,采样、量化和编码,如下:

  • 采样:每隔一定时间进行采样,转换成一个个离散的点。采样率为信号带宽两倍以上(来奎斯特采样定理)。
  • 量化:再对离散点的值四舍五入取整,进行分层。
  • 编码:将分层的值进行二进制编码,来表示脉冲的幅值。PCM音频格式编码为A律13折线编码。

声道

  • 单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);
  • 双声道立体声声音文件,每次采样数据为一个16位(采样位数仍是8bit)的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。

采样频率

  • 8000 hz: 电话采样
  • 22050 hz: 常用
  • 44100 hz: CD音质
  • >48000 hz: 对人耳没有意义

采样位数

  • 1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级
  • 2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;
  • 4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了

如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.

比特率

码率是指经过编码后的音频数据每秒钟需要用多少个比特来表示

无损

指传统CD格式中的16bit/44.1kHz采样率的文件格式

WAVE文件

WAVE格式是PC上存储PCM音频最流行的文件格式,支持不同的比特率、采样率、多声道音频。

WAV文件格式

IFF

WAVE文件,遵从IFF标准,采用"chunk"来存储数据。

如果要在WAV文件中补充信息,只需要在末尾追加新的"chunk",不需要改变整个文件。

必须的chunk

WAV格式中,有三个必须的chunk

  • RIFF WAVE Chunk:
  • Format Chunk:
  • Data Chunk:

imagepng

44

WAV文件的前44字节,保存着元数据信息,具体为[1]:

Positions Sample Value Description
1 - 4 “RIFF” Marks the file as a riff file. Characters are each 1 byte long.
5 - 8 File size (integer) Size of the overall file - 8 bytes, in bytes (32-bit integer). Typically, you’d fill this in after creation.
9 -12 “WAVE” File Type Header. For our purposes, it always equals “WAVE”.
13-16 "fmt " Format chunk marker. Includes trailing null
17-20 16 Length of format data as listed above
21-22 1 Type of format (1 is PCM) - 2 byte integer
23-24 2 Number of Channels - 2 byte integer
25-28 44100 Sample Rate - 32 byte integer. Common values are 44100 (CD), 48000 (DAT). Sample Rate = Number of Samples per second, or Hertz.
29-32 176400 (Sample Rate * BitsPerSample * Channels) / 8.
33-34 4 (BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 bit mono4 - 16 bit stereo
35-36 16 Bits per sample
37-40 “data” “data” chunk header. Marks the beginning of the data section.
41-44 File size (data) Size of the data section.

Sample values are given above for a 16-bit stereo source.

Format Chunk

Format Chunk中指定了formatTag,通常都为LPCM(Linear pulse-code modulation)格式。

参考

  1. Digital Audio - Creating a WAV (RIFF) file
  2. PCM音频编码
  3. PCM语音编码
  4. WAV文件格式解析
  5. WAV@Wikipedia
  6. android音频裁剪(2)——Wav裁剪

评论

发表评论

validate