WAV格式文件分析

news/2024/11/2 4:33:33/

WAV格式文件分析

目录

  • WAV格式文件分析
    • 概述
    • 一、WAV格式文件
        • 1、波形声音文件格式 WAV
        • 2、音频文件参数简介
    • 二、文件结构
        • 1、WAV文件的文件头
        • 2、WAV文件的数据体
    • 三、WAV格式文件数据体结构
        • 1、RIFF Chunk区块
        • 2、Format Chunk区块
        • 3、DATA区块
    • 总结
  • 参考及引用材料


概述

WAV格式目前是最常见的音频文件格式之一,是微软公司专门为旗下Windows操作系统开发的一种标准数字音频文件。WAV格式文件最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为*.wav,是WaveForm的简写,也称为波形文件,可直接存储声音波形,且还原的波形曲线十分逼真。

本质上,WAV文件格式是一种存储声音波形的数字音频格式,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linux等多种操作系统。WAV支持多种音频数字、取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1kHz的取样频率,16位量化数字,因此声音文件质量和CD相差无几。同时,WAV格式文件还有真实记录自然声波形、数据压缩程度低、数据量相对较大等特点。

在本文中,作者则以多媒体文件的“容器”概念出发,针对WAV格式文件的文件结构、数据组织结构、元数据信息等方面作简要的说明。


一、WAV格式文件

1、波形声音文件格式 WAV

WAV即波形声音文件格式 (Waveform Audio File Format,简称WAVE,因后缀为*.wav故简称WAV文件),其采用RIFF(Resource Interchange File Format,资源互换文件格式)结构,并符合(RIFF)规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。Wave格式支持MSADPCM、CCITT A律、CCITT μ律和其他压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式;但由于“无损”的特点,WAV文件格式所占用的磁盘空间相对较大(每分钟的音乐大约需要12MB磁盘空间),故此文件格式多用于存储简短的声音片段。同时WAV文件格式通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。但是严格意义上来讲,WAV也可以存储其它压缩格式的音频数据。

2、音频文件参数简介

对于形如44100HZ 16bit stereo 或者 22050HZ 8bit mono参数描述的音频文件,其蕴含的文件参数包括:

  • 采样率:声音信号在“模→数”转换过程中单位时间内采样的次数。
  • 采样值(采样精度):每一次采样周期内声音模拟信号的积分值。
    同时,每个采样数据记录的是振幅, 而采样精度取决于储存空间的大小。

对于单声道(mono)文件,采样数据为8位的短整数,同时其采样精度有:

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

对于双声道立体声(stereo)文件,每次采样数据为一个16位的整数(int),且采样是双份的,也为单声道文件的两倍。采样数据中高八位(左声道)和低八位(右声道)分别代表两个声道。

由于wav格式文件本质上为音频文件,即可根据文件的大小、采样频率和采样大小估算文件的播放长度。


二、文件结构

WAV文件遵循RIFF规则,其数据体以区块(Chunk)为最小单位进行存储,而整个文件则以文件头进行标识。其结构示意如下表与图。

WAV HeadData Chunk……Data Chunk

WAV文件整体结构

1、WAV文件的文件头

PNG格式文件的文件头是由位固定的字节进行描述,其大小占44个字节。

char *header = new char[44]; //wav文件头

其中前四字节为资源交换文件标志“RIFF”。

header[0] ='R';
header[1] ='I';
header[2] ='F';
header[3] ='F';	

后40字节则分别声明音频文件参数,包括:

int file_size;      //文件大小
int channel;         //声道数
int sample_rate;   //采样率
int bit_rate;      //比特率
int sample_bit;    //每个采样点的位数
int data_size;     //pcm数据的大小

2、WAV文件的数据体

WAV文件的数据体区块一般由3个区块组成:RIFF Chunk、Format Chunk和Data Chunk。示意如下表。另外,文件中还可能包含一些可选的区块,如:Fact Chunk、Cue Points Chunk、Playlist Chunk、Associated Data List Chunk等。

RIFF ChunkFormat ChunkData Chunk……

三、WAV格式文件数据体结构

目前可知,WAV音频文件的内部数据是以数据体为单位在文件头后进行存储,其数据体内部数据由PCM(脉冲编码调制)格式表示的样本组成。每个区块则均有表征数据块特点的ID、Size等码段,同时也有不同码段内容。

1、RIFF Chunk区块

RIFF数据块长度为12字节,共有三种码段。如下表所示。

名称偏移地址字节数内容
ID0x004RIFF (0x52494646)
Size0x044fileSize - 8
Type0x084WAVE(0x57415645)

其中:

  • RIFF Chunk类型数据块以RIFF的ID部分为标识,说明数据块类型;
  • Size是整个文件的长度减去ID和Size的长度,表征包含Type字段在内的数据块长度;
  • Type是WAVE表示后面需要Format和Data两个子区块。

2、Format Chunk区块

名称偏移地址字节数内容
ID0x004'fmt ’ (0x666D7420)
Size0x04416
AudioFormat0x082音频格式
NumChannels0x0A2声道数
SampleRate0x0C4采样率
ByteRate0x104每秒数据字节数
BlockAlign0x142数据块对齐
BitsPerSample0x162采样位数

其中:

  • 此类型数据块以“fmt”的ID为标识,说明数据块类型;
  • Size表示该区块数据不包含ID和Size的长度;
  • AudioFormat表示Data区块存储的音频数据的格式,PCM音频数据的值为1;
  • NumChannels表示音频数据的声道数,其中1表示单声道,2表示双声道;
  • SampleRate表示音频数据的采样率;
  • ByteRate每秒数据字节数,计算公式为

ByteRate = SampleRate × NumChannels × BitsPerSample / 8

  • BlockAlign每个采样所需的字节数,计算公式为NumChannels*BitsPerSample/8;
  • BitsPerSample每个采样存储的bit数,其中8表示8bit,16表示16bit,32表示32bit。

3、DATA区块

DATA区块为音频文件存储实际的数据。

名称偏移地址字节数内容
ID0x004‘data’ (0x64617461)
Size0x044-
Data0x08-音频数据

其中:

  • Size表示音频数据的长度,不包含ID和Size数据段,且对于采样率为ByteRate的音频文件数据来说,其计算公式为

Size = ByteRate × seconds

  • Data为实际存储的完整音频数据。

总结

通过对WAV格式文件的文件结构、数据结构以及元数据表示方法的简要学习,作者对WAV格式媒体文件有了进一步的认识。同时,通过分析WAV格式文件内部数据的表示内容,此过程中也对音频文件的各项参数指标有了更深的了解。


参考及引用材料

[1] WAV文件格式详解
[2] WAVE PCM Sound File Format
[3] wav文件格式分析
[4] WAV 百度百科


http://www.ppmy.cn/news/361256.html

相关文章

音频格式wav与mp3和wma的区别与音质

MP3 全称是Moving Picture Experts Group Audio Layer III。简单的说,MP3就是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3。 wma 是微软在制订的音频压缩文件格式,比mp3标准晚&#xf…

wav文件格式分析详解

wav文件格式分析详解 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。按照在文件中的…

wav文件格式详解

WAV(Waveform audio format)是微软与IBM公司所开发的一种声音编码格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,也…

wav音频文件格式解析

wav是微软开发的一种音频文件格式&#xff0c;注意&#xff0c;wav文件格式是无损音频文件格式&#xff0c;相对于其他音频格式文件数据是没有经过压缩的&#xff0c;通常文件也相对比较大些。 文件格式如图所示&#xff1a; 解析代码如下&#xff1a; #include <stdio.h&…

WAV文件格式分析

一. RIFF概念 在Windows环境下&#xff0c;大部分的多媒体文件都依循着一种结构来存放信息&#xff0c;这种结构称为"资源互换文件格式"(Resources lnterchange File Format)&#xff0c;简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RI…

音频之WAV格式编码解析

学习目标&#xff1a; 音频之WAV格式编码解析 学习内容&#xff1a; 介绍 WAV是最常见的声音文件格式之一&#xff0c;wav文件分为两个部分&#xff0c;第一个部分是wav头文件&#xff0c;第二个部分是PCM编码的音频数据部分。是微软公司专门为Windows开发的一种标准数字音频…

【计算摄影学】总目录

1.数码相机 《数码相机中的图像传感器和信号处理》和《光与赢的魔幻乐园有趣的透镜》 1.1 数码相机概览 1.2 数码相机中光学系统 2.图像传感器 《数码相机中的图像传感器和信号处理》和《智能cmos图像传感器与应用》 2.1 图像传感器基础知识 2.2 CCD图像传感器 2.3 CMOS图像…

Java中的动态链接VS操作系统动态链接

在操作系统OS中为了优化内存的使用会采用一种动态链接方式&#xff0c;一个文件想要在操作系统中运行必须经过编译、汇编译、链接、装载等步骤。可以参考Java程序是怎么跑起来的。本篇主要讲解Java栈帧中动态链接部分与操作系统的的动态链接的区别与联系 操纵系统为什么需要动态…