用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消耗。
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消耗。
1.我之前就是用此方法, 有继断断续续的感觉. 因为把间频数据写入设备要一段时间.
2.此方法我以前想过,但我没用过.我想用回调来解决,不知你知道waveOutOpen如何传递回调函数?并且,回调函数应如何声明?