我有以下情况。在一台机器上有一张 Fritz ISDN 卡。有一个进程负责在此设备的 wave out 上播放某个 wave 文件(ISDN 连接在启动时建立并保持不变)。场景很简单,只要需要,进程就会在之前打开的 wave 设备上调用 waveOutWrite()
(当然一切都已初始化,没有任何问题)并且回调函数等待 MM_WOM_DONE
消息知道播放已经结束。
然而,几天后(过程和机器都没有改变)MM_WOM_DONE
消息在调用 waveOutWrite()
后立即出现,即使 wave 持续几秒钟。再次没有报告错误,看起来文件已播放但长度为零(事实并非如此)。我也确信 waveOutReset()
没有被我的进程调用(它也会触发发送上述消息)。我过去曾经遇到过一些奇怪的问题,只需重新安装 TAPI 驱动程序即可解决。这一次出于某种原因,我再次执行它是有问题的,我正在尝试更多的分析方法:)。有什么建议可能导致这种行为吗?也许在 ISDN 线路的另一端?
最佳答案
根据您的描述,您正在异步播放。您确定当时没有清理 wav 文件的后备内存吗?
关于c++ - 播放波形文件立即结束(C++,Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629/