c++ - 播放波形文件立即结束(C++,Windows)

标签 c++ windows waveout

我有以下情况。在一台机器上有一张 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/

相关文章:

windows - 是否有用于向任务栏图标添加徽章的 Windows API?

c++ - 音频设备的 ID 名称(waveout c++)

python - 使用 cppyy 从 Python 解析 C (C++) 调用方法

c++:通过指针访问主类的std::vector的类出错

c++ - HTTP Content-Length 大小不正确?

c++ - 如何在后台进程中处理来自 Windows 任务管理器的 "End Task"?

c++ - 处理嘈杂的运动姿势

windows - 从 Windows 控制 USB

c# - 内存样本中的Naudio回放会产生声音的延迟和不美观的间隙

multithreading - waveOut (Win32API) 和多线程