美文网首页
WAV格式 文件详解

WAV格式 文件详解

作者: woo_5857 | 来源:发表于2019-12-02 13:00 被阅读0次

1.概述

Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的),它采用RIFF(Resource Interchange File Format)文件格式结构。通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。但是严格意义上来讲,WAV也可以存储其它压缩格式的音频数据。

2.格式解析

WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。

2.1 RIFF区块

以'RIFF'为标识

Size是整个文件的长度减去ID和Size的长度

Type是WAVE表示后面需要两个子块:Format区块和Data区块

2.2 FORMAT区块

以'fmt '为标识

Size表示该区块数据的长度(不包含ID和Size的长度)

AudioFormat表示Data区块存储的音频数据的格式,PCM音频数据的值为1

NumChannels表示音频数据的声道数,1:单声道,2:双声道

SampleRate表示音频数据的采样率

ByteRate每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8

BlockAlign每个采样所需的字节数 = NumChannels * BitsPerSample / 8

BitsPerSample每个采样存储的bit数,8:8bit,16:16bit,32:32bit

2.3 DATA区块

以'data'为标识

Size表示音频数据的长度,N = ByteRate * seconds

Data音频数据

3. 小端存储

WAV文件以小端形式来进行数据存储。

所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中

下面解释一下PCM数据在WAV文件中的bit位排列方式

wav文件头格式详解

首先先声明几个变量:

int file_size;      //文件大小

int channel;        //声道数

int sample_rate;   //采样率

int bit_rate;      //比特率

int sample_bit;    //每个采样点的位数

int data_size;     //pcm数据的大小

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

1:

00~03 4字节“RIFF” 资源交换文件标志

header[0] ='R';

header[1] ='I';

header[2] ='F';

header[3] ='F';

2:

04~074字节size=文件大小-8字节 (从下一个字节开始到文件末尾的总字节数)

header[4] = (char) ((file_size -8) & 0xff);

header[5] = (char) (((file_size -8) >> 8) & 0xff);

header[6] = (char) (((file_size -8) >> 16) &0xff);

header[7] = (char) (((file_size -8) >> 24) &0xff);

3:

08~11 4字节“wave” wav文件标志

header[8]  ='W';

header[9]  ='A';

header[10] ='V';

header[11] ='E';

4:

12~15 4字节“fmt” 波形格式标志,最后一位空格

header[12] ='f';

header[13] ='m';

header[14] ='t';

header[15] =' ';

5:

16~19 4字节过滤字节(一般为00000010H)

header[16] =16;

header[17] =0;

header[18] =0;

header[19] =0;

6:

20~21 2字节格式种类(值为1时,表示数据为线性pcm编码)

header[20] =1;

header[21] =0;

7:

22~23 2字节通道数,单声道为1,双声道为2

header[22] = (char) channel;

header[23] =0;

8:

24~27 4字节采样率

header[24] = (char) (sample_rate &0xff);

header[25] = (char) ((sample_rate >>8) & 0xff);

header[26] = (char) ((sample_rate >>16) & 0xff);

header[27] = (char) ((sample_rate >>24) & 0xff);

9:

28~31 4字节比特率(Byte率=采样频率*音频通道数*每次采样得到的样本位数/8)

header[28] = (char) (bit_rate &0xff);

header[29] = (char) ((bit_rate >>8) & 0xff);

header[30] = (char) ((bit_rate >>16) & 0xff);

header[31] = (char) ((bit_rate >>24) & 0xff);

10:

32~33 2字节数据块长度(每个样本的字节数=通道数*每次采样得到的样本位数/8)

header[32] = (char) (channel* sample_bit / 8);

header[33] =0;

11:

34~35 2字节每个采样点的位数

header[34] = (char) sample_bit;

header[35] =0;

12:

36~39 4字节 “data”数据标志符

header[36] ='d';

header[37] ='a';

header[38] ='t';

header[39] ='a';

13:

40~43 4字节 pcm音频数据大小

header[40] = (char) (data_size &0xff);

header[41] = (char) ((data_size >>8) & 0xff);

header[42] = (char) ((data_size >>16) & 0xff);

header[43] = (char) ((data_size >>24) & 0xff);

当我们在一个.wav文件前写入这44个字节的头,后面接上pcm数据.这样很多播放器都能播放了.

 码率

样本的字节数=通道数*每次采样得到的样本位数/8

文件大小计算 16*16000*1/8/1024* time = 31.25 kb * time

32*44100*2/8/1024* time = 344.53125 kb * time

相关文章

  • WAV文件格式详解

    1.概述 Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的),...

  • 音乐播放学习

    一、常见音频格式 WAV文件,WAV文件格式是一种由微软和IBM联合开发的用于音频 数字存储的标准,WAV文件...

  • 音乐播放学习

    一、常见音频格式 WAV文件,WAV文件格式是一种由微软和IBM联合开发的用于音频 数字存储的标准,WAV文件...

  • 2019-04-07 音频文件合并

    两个wav文件合并过程 主要的思路 :wav格式的音频文件有一定的格式:head+数据字节数组!两个wav格式...

  • WAV和PCM的关系和区别

    什么是WAV和PCM? WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Inter...

  • WAV,PCM学习笔记

    什么是WAV和PCM? WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Inter...

  • 调用讯飞音频文件识别api踩得坑

    1:讯飞支持的音频文件格式只有pcm和wav(这种格式直接忽略,用ffmpeg库转换其他音频格式成wav格式之后,...

  • WSOLA仿真

    1.WAV文件格式分析 仿真中读出的wav文件信息如下Fs=4.41kHz,nBits = 16 bit/samp...

  • linux文件、命令等规则

    linux文件的后缀: 系统文件:*.conf *.rpm 程序脚本:*.c *.php 格式文件:*.wav *...

  • iOS wav转mp3以及意见简单音频录制格式

    简介 基于wav音频文件太大,因项目上传作业录音,可能一次上传几十上百个wav 文件,就产生了将wav格式的录音...

网友评论

      本文标题:WAV格式 文件详解

      本文链接:https://www.haomeiwen.com/subject/jpnxgctx.html