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该怎么填写。
...全文
121 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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;

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧