waveOutOpen?

hyqwater 2005-03-02 06:31:27
我用这个函数的时候,WAVEFORMATEX怎么填写啊。
WAVEFORMATEX的wFormatTag我只能填写WAVE_FORMAT_QUERY,或者WAVE_FORMAT_PCM才能
调用waveOutOpen成功。

Msdn说
wFormatTag
Waveform-audio format type. Format tags are registered with Microsoft Corporation for many compression algorithms. A complete list of format tags can be found in the MMREG.H header file.
但我填写其他格式的时候,waveOutOpen总返回WAVERR_BADFORMAT错误。

求高手指教!!!

我想播放一个
采样 8
声道 单声道
采样级别 8kHz
音频格式 CCITT A-Law
的语音文件。waveOutOpen的WAVEFORMATEX该怎么填写。
...全文
81 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hyqwater 2005-03-03
typedef struct {
WORD wFormatTag; // WAVE_FORMAT_PCM,必须写这个。
WORD nChannels; // 单声道就设1
DWORD nSamplesPerSec; // 每秒采样,CD音质44100就可以了,你要的8000也可以。
DWORD nAvgBytesPerSec; // = nSamplesPerSec * nBlockAlign
WORD nBlockAlign; // = nChannels * wBitsPerSample / 8,因为单位是bytes。
WORD wBitsPerSample; // 分辨率,你要的是8;还可填16。
WORD cbSize; // 保留
} WAVEFORMATEX;

由于我要播放的文件不是WAVE_FORMAT_PCM格式所以填写WAVE_FORMAT_PCM播放的时候有很大的噪音,
后来,我修改为
waveOutOpen 的第二个参数为wave_mapper行了.恶梦.....
回复
晨星 2005-03-03
学习学习。。。
回复
loveisbug 2005-03-03
typedef struct {
WORD wFormatTag; // WAVE_FORMAT_PCM,必须写这个。
WORD nChannels; // 单声道就设1
DWORD nSamplesPerSec; // 每秒采样,CD音质44100就可以了,你要的8000也可以。
DWORD nAvgBytesPerSec; // = nSamplesPerSec * nBlockAlign
WORD nBlockAlign; // = nChannels * wBitsPerSample / 8,因为单位是bytes。
WORD wBitsPerSample; // 分辨率,你要的是8;还可填16。
WORD cbSize; // 保留
} WAVEFORMATEX;
回复
相关推荐
发帖
GAME,图形处理/多媒体
创建于2007-08-02

1165

社区成员

Delphi GAME,图形处理/多媒体
申请成为版主
帖子事件
创建了帖子
2005-03-02 06:31
社区公告
暂无公告