Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2342076
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:02:29

waveOutOpen
waveOutPrepareHeader
waveOutWrite
waveOutReset
waveOutUnprepareHeader
waveOutClose

还要处理两个结构:

//假设采样率为 11025, 8比特, 单声道
WAVEFORMATEX _WaveFormatEx;
_WaveFormatEx.wFormatTag     = WAVE_FORMAT_PCM;
_WaveFormatEx.nSamplesPerSec = 11025;
_WaveFormatEx.nAvgBytesPerSec= 11025;
_WaveFormatEx.nChannels      = 1;
_WaveFormatEx.wBitsPerSample = 8;
_WaveFormatEx.nBlockAlign    = (_WaveFormatEx.wBitsPerSample>>3)*_WaveFormatEx.nChannels;

//.wav 文件的结构:
#pragma pack(push,1)
  typedef struct
   {
     unsigned char  FileMark[4];    //00H 4 必须为 "RIFF"
     unsigned long  FileSizeS8;     //04H 4 FileSize - 8
     unsigned char  WaveMark[4];    //08H 4 必须为 "WAVE"
     unsigned char  ckID[4];        //0CH 4 "fmt\x20"
     unsigned long  nChunkSize;     //10H 4 WAV文件块尺寸 (16 = 10H)
     unsigned short wFormatTag;     //14H 2 格式类别 (01H为PCM形式的声音数据)
     unsigned short nChannels;      //16H 2 通道数,单声道为1,双声道为2
     unsigned long  nSamplesPerSec; //18H 4 采样率 11025, 22050, 44100
     unsigned long  nAvgBytesPerSec;//1CH 4 波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8
     unsigned short nBlockAlign;    //20H 2 数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8
     unsigned short nBitsPerSample; //22H 2 每样本的数据位数,8, 16
     unsigned char  DataMark[4];    //24H 4 必须为 "DATA"
     unsigned long  DataSize;       //28H 4 声音数据的长度 <= FileSize - 44
   } TWaveFileHead;
#pragma pack(pop)

TWaveFileHead 后面紧接着就是 DataSize 个字节的声音数据,再往后有可能有一些软件和版权信息等,不需要处理。

知道这些,再看帮助就容易了。

--------------------next---------------------

阅读(1028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~