1.运用多媒体WAV文件格式二三例
http://tech.sina.com.cn/s/923.html
2.http://www.csdn.net/dev/Format/

解决方案 »

  1.   

    2、采样点和采样帧
    一个采样点就是一个采样数据,按采样位数的不同,可能占有1、2、4个字节。要注意
    采样数据的正负,采样位为16时,一个采样点就是一个短整型数,占两个字节,取值范围
    是-32768-32767;采样位是8或更少时,一个采样点是一个无符号字符型数据,取值范围
    是0-255。
    如果声音是多通道的,每个通道的采样点是交错排列的。以立体声(两通道)为例,先存储
    左声道的第一个采样点,然后是右声道的第一个采样点,然后是左声道的第二个采样点,右
    声道的第二个采样点……
    每个通道相同位置的采样点合称为一个采样帧,如立体声左声道的第一个采样点和右声道的
    第一个采样点构成一个采样帧,同样它们的第二个采样点组成另一个采样帧。如果是单声道,
    一个采样点就是一个采样帧。
    3、格式数据块(format chunk)
    typedef struct
    {
    char szChunkID[4]; // 前3个字符总是“fmt”标志该块是格式数据块
    long nChunkSize; // 存放格式数据块剩余的字节数。
    //  等于:sizeof(FORMATCHUNK) - sizeof(szChunkID) - sizeof(nChunkSize);
    short wFormatTag; // 采样数据是否使用了压缩格式:
    //  1: 非压缩(PCM);
    // 非1时表示采用了压缩格式(这里不讨论)
    unsigned short wChannels; // 声音的通道数;1:单声道;2:立体声
    unsigned long dwSamplesPerSec;// 采样率:11025、22050、44100等等
    unsigned long dwAvgBytesPerSec;// 采样数据每秒的数据量 = wBlockAlign * dwSamplesPerSec;
    unsigned short wBlockAlign; // 一个采样帧占用的字节数
    unsigned short wBitsPerSample; // 声音的采样位数
    }FORMATCHUNK;
      

  2.   

    对不起,丢了第一部分
    WAV文件格式
    请注意:这里讲述的只是一种PCM格式(非压缩方式)的WAV文件
    1、文件格式:
    一个WAV文件由若干个不同类型的数据块组成:这些数据块包含声音的各种信息;
    如采样率、波形数据块是实际的采样数据,这两个数据块是必须的。其他数据块是可选的。
    在排列顺序上,要求格式数据块必须位于波形数据块之前,但可以不相邻。具体结构:(省略号代表可选数据块)
    "RIFF" 标志,4个字节;
    一个长整型数、文件剩余的字节数 等于文件长度 - 8,4个字节;
    "WAVE" 标志,4个字节;
    格式数据块
    ……
    波形数据块
    ……
      

  3.   

    4、波形数据块
    typedef struct
    {
    char szChunkID[4]; // 数据块标志,总是为"data"
    long nChunkSize; // 采样数据的大小,不包括szChunkID,nChunkSize占用的8个字节
    // 也不包括可能存在的末尾的用于补齐的空白字节
    unsigned char szWaveFormatData[1]; //采样数据,按照采样帧放置。帧数等于nChunkSize
    // 除以格式数据块的wBlockAlign.
    }DATACHUNK;
      

  4.   

    不好意思,昨天忘记把最后一部分发出去了.不过最后一部分是讲述并不重要的其他数据块的.我给[email protected]发了电子邮件.不知道你是否已经收到.