wave文件格式与解析
来源:互联网 发布:淘宝子账号有风险吗 编辑:程序博客网 时间:2024/04/19 09:34
常见的声音文件主要有两种,分别对应于单声道(11.025KHz 采样率、8Bit的采样值)和
双声道(44.1KHz采样率、16Bit的采样值)。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声
声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
下面就是根据四个结构体写的代码,注意FACT不是必须的,可以不用写入头,不写的话就
是44个字节,写的话wave的头是56个字节。
1)一个wave file包括四个CHUNK,除了FACT之外,其它是必须的
2)第一个RIFF是整个文件的头,所以别名为WAV_HEADER,而不是RIFF
1. 12个字节
typedef struct RIFF_CHUNK{
char fccID[4]; // must be "RIFF"
unsigned long dwSize; // all bytes of the wave file subtracting 8, 44-8+length or 56-8 +length
// which is the size of fccID and dwSize, dwSize = fileSize - 8
char fccType[4]; // must be "WAVE"
}WAVE_HEADER;
2. 24个字节
typedef struct FORMAT_CHUNK{
char fccID[4]; // must be "fmt "
unsigned long dwSize; // size of this struct, subtracting 8, which is the sizeof fccID and dwSize
// 24-8=16 -->0x10, 0x12
unsigned short wFormatTag; // one of these: 1: linear,6: a law,7:u-law, FORMAT_TAG
unsigned short wChannels; // channel number
unsigned long dwSamplesPerSec; // sampling rate, SAMPLE_RATE,AC44=44100
unsigned long dwAvgBytesPerSec; // bytes number per second, 2*AC44*2=2B110
//CHANNEL_NUN * SAMPLE_RATE * BYTES_EACH_SAMPLE
unsigned short wBlockAlign; // 每样本的数据位数(按字节算), 其值为:通道,BYTES_EACH_SAMPLE
// 数*每样本的数据位值/8,播放软件需要一次处
// 理多个该值大小的字节数据, 以便将其值用于
// 缓冲区的调整每样本占几个字节
// NumChannels * uiBitsPerSample/8 2* 16/8 =4
unsigned short uiBitsPerSample; // quantization 1
}FORMAT;
3.12个字节
// The fact chunk is required for all new WAVE formats.
// and is not required for the standard WAVE_FORMAT_PCM files
// 也就是说,这个结构体目前不是必须的,一般当wav文件由某些软件转化而成,则包含该Chunk
// 但如果这里写了,则必须是如下的结构,并且在四个结构体中的位置也要放在第三
typedef struct {
char fccID[4]; // must be "fact"
unsigned long id; // must be 0x4
unsigned long dwSize; // 暂时没发现有啥用, length
}FACT;
4. 8个字节
// 数据结构
typedef struct {
char fccID[4]; // must be "data"
unsigned long dwSize; // dwSize = fileSize - 44/56, byte_number of PCM data in byte,WAVE_HEADER.size - dwSize = 44-8 or 56-8
}DATA;
0 0
- wave文件格式与解析
- WAVE文件格式
- WAVE文件格式
- Wave文件格式
- wave文件格式
- WAVE文件格式
- WAVE文件格式
- Wave文件格式
- WAVE文件格式
- WAVE文件格式
- WAVE 文件格式
- wave文件格式
- wave文件格式
- wave文件格式
- WAVE文件格式
- 关于 Wave 文件的基础知识与文件格式
- (1): 关于 Wave 文件的基础知识与文件格式
- WAVE文件格式剖析
- 百炼OJ 2808:校门外的树
- 社説 20150126 邦人人質新映像 残虐非道な行為を非難する
- Target runtime Apache Tomcat 6.0 is not defined 解决方法
- iOS-UITextField,UITextView 设置可输入字符串长度
- diff和patch十分钟指南
- wave文件格式与解析
- vim支持中文显示和编辑的.vimrc配置文件
- 译文 日经春秋 20150126
- 老北京豆腐脑做法
- 字节流与字符流的区别详解
- 浴室细菌多清洁妙招大公开
- 主妇注意:猛火炒菜 易患肺癌
- iOS第三方MagicalRecord
- php中的round函数的bug