800分求一个解决方案....(WAV播放)

cmain83 2003-06-21 09:51:23
用Win API 来播放WAV文件, 播放流程如下:

1、waveOutGetNumDevs()查询设备
2、mmicoOpen()打开文件
3、mmioDescend()来确定文件是否为WAV文件和取出WAV文件的信息
4、mmioRead()读取音频数据
5、waveOutOpen()打开音频设备
6、waveOutPrepareHeader()生成WAV信息头
7、waveOutWrite()将音频数据写入波形设备
8、waveOutUnPrepareHeader()播放完毕后,清除信息头
9、waveOutClose()关闭设备

现在我要解决的是:
1、如果音频数据过长(if >500M)。这样的话,是不可能把音频数据
一次全部写入设备的,因为内存不够。但是,用分段播放(先取一
部分音频数据写入设备播放,放完后再取另一部分写入设备播放)
的话,就会用明显的断断续续的感觉。
请问,如何解决分段播放的断断续续的感觉。
2、在播放的时候,我要时刻检测(用一个While循环)是否播放完毕,
这样,将会消耗太多的CPU时间。
请问,如何才能解决CPU消耗。
...全文
95 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmain83 2003-06-26
  • 打赏
  • 举报
回复
真没人救我吗?
cmain83 2003-06-25
  • 打赏
  • 举报
回复
你这样播放能显示波形吗?
Maple119 2003-06-25
  • 打赏
  • 举报
回复
晕.播放WAV音乐要这么复杂吗???看看我的吧.

SndPlaySound(pChar(fSoundPath+'\KaoQinFail.wav'),SND_ASYNC); //后台播放.

嘿嘿.要记得引用 MMSystem 单元哟.
cmain83 2003-06-25
  • 打赏
  • 举报
回复
麻烦你给我发一份吧..

mplent@vip.sina.com
ltwxy 2003-06-25
  • 打赏
  • 举报
回复
我有一个老外写的wave的语音采集和播放的程序,是双缓冲的,没有断的感觉。如果需要可联系我,Email:Lt_wxy@163.com
online 2003-06-25
  • 打赏
  • 举报
回复
UP
邹工 2003-06-25
  • 打赏
  • 举报
回复
up
bluespy 2003-06-25
  • 打赏
  • 举报
回复
gz
cmain83 2003-06-25
  • 打赏
  • 举报
回复
能详细一点吗?
payzq 2003-06-25
  • 打赏
  • 举报
回复
up belllab(bell) ( )
tasuwen 2003-06-25
  • 打赏
  • 举报
回复
up ,骗人吗明明写着800分,只有100分,撤
cmain83 2003-06-25
  • 打赏
  • 举报
回复
大侠救命呀
cmain83 2003-06-25
  • 打赏
  • 举报
回复
难道真的没其它的方法了吗?
hch_45 2003-06-24
  • 打赏
  • 举报
回复
学Windows Media Player,用媒体流。。
cmain83 2003-06-24
  • 打赏
  • 举报
回复
难道真的没其它的方法了吗?
belllab 2003-06-21
  • 打赏
  • 举报
回复
1.用两块内存来存放音频数据,在播放一块进读另一块
2.用线程来检测吧
cmain83 2003-06-21
  • 打赏
  • 举报
回复
TO belllab(bell) :
1.我之前就是用此方法, 有继断断续续的感觉. 因为把间频数据写入设备要一段时间.
2.此方法我以前想过,但我没用过.我想用回调来解决,不知你知道waveOutOpen如何传递回调函数?并且,回调函数应如何声明?

1,183

社区成员

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

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