wav 文件格式学习

本贴最后更新于 2222 天前,其中的信息可能已经物是人非

术语

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 裁剪

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...