WAV格式音频文件头文件格式以及C++读取
2017-04-18 13:25
288 查看
起始地址 | 占用空间 | 本地址数字的含义 |
00H | 4byte | RIFF,资源交换文件标志。 |
04H | 4byte | 从下一个地址开始到文件尾的总字节数。高位字节在后面,这里就是001437ECH,换成十进制是1325036byte,算上这之前的8byte就正好1325044byte了。 |
08H | 4byte | WAVE,代表wav文件格式。 |
0CH | 4byte | FMT ,波形格式标志 |
10H | 4byte | 00000010H,16PCM,我的理解是用16bit的数据表示一个量化结果。 |
14H | 2byte | 为1时表示线性PCM编码,大于1时表示有压缩的编码。这里是0001H。 |
16H | 2byte | 1为单声道,2为双声道,这里是0001H。 |
18H | 4byte | 采样频率,这里是00002B11H,也就是11025Hz。 |
1CH | 4byte | Byte率=采样频率*音频通道数*每次采样得到的样本位数/8,00005622H,也就是22050Byte/s=11025*1*16/2。 |
20H | 2byte | 块对齐=通道数*每次采样得到的样本位数/8,0002H,也就是2=1*16/8。 |
22H | 2byte | 样本数据位数,0010H即16,一个量化样本占2byte。 |
24H | 4byte | data,一个标志而已。 |
28H | 4byte | Wav文件实际音频数据所占的大小,这里是001437C8H即1325000,再加上2CH就正好是1325044,整个文件的大小。 |
2CH | 不定 | 量化数据。 |
struct WaveFileHead { char riff_id[4]; //"RIFF" int size0; //波形块的大小 char wave_fmt[8]; //"wave" and "fmt" int size1; //格式块的大小 short fmttag; //波形编码格式 short channel; //波形文件数据中的通道数 int sampl; //波形文件的采样率 int bytepersecblockalign; //平均每秒波形音频所需要的记录的字节数 short blockalign; //一个采样所需要的字节数 short bitpersamples; //声音文件数据的每个采样的位数 char data[4]; //"data" int datasize; //数据块大小 };
创建一个WaveFileHead类型对象wavehead,通过wavehead来读取音频文件的文件头中的各种信息,并根据该信息来进行音频文件数据的读取,相关读取方法如下:
fread(&wavehead,sizeof(struct WaveFileHead),1,fp);//读取文件头存入wavehead
创建*pdata指针用于存储文件的数据块部分:
fread(pdata,sizeof(short),wavehead.datasize/2,fp) //读取数据存入pdata指针
相关文章推荐
- C#生成音频文件以及转换成需要的格式
- 用程序读取音频文件,识别其所用的音频文件格式
- 用程序读取音频文件,识别其所用的音频文件格式
- MPEG音频文件格式(包括MP3文件格式)详解 (二)
- MPEG音频文件格式(包括MP3文件格式)详解
- MPEG音频文件格式(包括MP3文件格式)详解
- 如何拿回被恶意或者不小心删除硬盘所有者权限而导致的文件访问以及修改权限被限制(NTFS格式安全权限问题)
- MPEG音频文件格式(包括MP3文件格式)详解
- MPEG音频文件格式(包括MP3文件格式)详解
- wince下显示GIF、JPEG以及其它格式的图像文件
- 解决(播放此文件需要由格式标记 75 标识的音频编解码器)的问题
- MPEG音频文件格式(包括MP3文件格式)详解
- OAC软件项目及音频文件格式的介绍
- MPEG音频文件格式(包括MP3文件格式)详解 (一)
- 在VS.NET2005中使用java代码段以及SOL文件格式的解析
- 主要机型对应的音频格式以及震动功能列表
- 位图文件(BMP)格式分析以及程序实现
- 关于出力文件以及出入力文件权限和格式
- AMR音频编码器概述及文件格式分析
- 关于双通输入法管理里面要导入的文件以及生成文件的格式说明