问题标签 [mci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mci - 如何在 MCI 错误 #10 后重置:无法加载驱动程序
我在 C++ 程序中使用 MCI 来播放多个短 MP3 文件。几个小时后一切顺利,成功播放了数百个 MP3 文件。然后突然,我收到 MCI 错误 #10:无法加载驱动程序。在此之后,每次打开新的 MP3 文件时都会出现相同的错误。为了让事情再次正常运行,我必须停止并重新启动我的程序,之后一切都会再次正常运行一两个小时。
我可以忍受这个故障,只要我知道在错误发生后如何重置东西,而不必重新启动我的程序。
注意:我没有内存泄漏,内存使用在运行数小时内是稳定的。
我发现了这个:SetupDiRestartDevices 函数 有人有使用音频设备的经验吗?您是否认为它可以在我的程序中运行而无需重新启动计算机。
c# - 如何使用 MCI 获取歌曲长度
尝试查找像 HH:MM:SS 这样的歌曲持续时间,以便在我的程序中显示。
尝试使用
和
但结果得到错误 - “输入字符串不正确”
用于理解这一点。据我了解,获取歌曲长度需要使用命令status MediaFile length track number
,其中status
- 主命令,MediaFile
- 告诉使用当前打开的 MediaFile,length track number
- 请求的参数。仅在打开文件后使用此方法。
delphi - 如何正确使用 mciSendString
我使用以下播放 MP3 声音mciSendString
mciSendString("play \"mysound.mp3\"", NULL, 0, 0);
以上工作正常。但从我在网上看到的情况来看,人们对上述代码使用了各种包装器。一些先发送open
命令play
,然后等待通知,然后发送close
命令,他们还使用文件别名等。
我的问题是——这一切有必要吗?我的主要兴趣只是播放文件并以异步方式进行。上面的命令似乎完成了所有的清理工作,所以我的问题是 - 是否真的需要在播放声音时使用open
或close
命令和通知以正确释放内存和解除分配声音,这样做有好处吗?
从我在调试器中可以看到,在执行上述命令时,系统会加载所需的 DLL,然后启动一些线程,一旦播放结束,线程就会退出并且 DLL 会被卸载。所以我的猜测是打开/关闭是可选的,因为系统会自动执行所有分配/解除分配,但我可能错了。如果我只调用上面的行而不是别的,我是否会泄漏一些内存或资源?
这是调试日志显示的内容 - 我可以从这个日志中得出结论,线程已关闭并且 DLL 文件已卸载:
c++ - 试图打开 CD 托盘
我正在尝试使用一段代码打开和关闭计算机的 CD 托盘。我一直在使用 MCI 命令,并已包含winmm.lib
在我的项目配置的其他依赖项中。我也包括windows.h
在内mmsystem.h
。
我正在使用的代码如下:
代码构建并运行良好,只是没有 CD 托盘操作正在进行!谁能建议我如何适应这个?
c++ - C++ Win32 - 如何使用 mciSendString() 循环 MIDI?
我正在制作一个游戏,我正在尝试使用 mciSendString() 循环一个 MIDI 文件。我查看了 CProgramming.com,但示例的窗口对象是 OWL,我无法移植它们。我还尝试查看 Brian Gradin 的问题,但答案仅包含两行代码。我在 MSDN 上看过,但这就像一个参考,而不是一个教程。添加重复不会播放任何内容。这是我到目前为止的代码:
如果你帮忙,那么我一定会把你放在学分中。谢谢!:)
编辑:我试图处理通知标志,但我的代码不起作用。它播放一次主题然后停止。
c# - 歌曲信息检索
我正在尝试从 C# 中的 .mp3 文件中检索音频播放器的详细信息。
代码片段:
我的问题是:
- 如何设置歌曲的音量?
- 我如何获得歌曲的比特率/采样率?
我更喜欢使用 MCI 或 NAudio,因为我知道它们的可靠性。
windbg - 如何找到“访问冲突”的来源
简而言之,我有一个 C# 应用程序执行大量 mciSendString 调用(通过 dllimport)来控制 wav 文件播放(本质上是打开、播放、暂停、停止、状态、关闭)。运行一段时间后,应用程序在没有通知的情况下因“访问冲突”而崩溃。
即使我从我的 vs2012 运行应用程序,Visual Studio 也没有捕获到异常。即使使用“强制中断异常”选项,我在从 vs2012 调试它时也没有运气。因此,我设置了 WER 来生成故障转储,并且我正在使用带有 psscor2.dll 插件的 windbg 来调试它。
然后按顺序,使用以下命令,这就是我得到的(缩短为可读性必不可少的):
$>.ecxr
$>~*kb
$>!分析-v
异常似乎发生在 Unloaded_mciwave.dll 的线程 #30 中,但我不知道如何进一步推动调试。我怎样才能更好地了解发生了什么?
我怎样才能知道这两行之间发生了什么?
提前谢谢你的帮助。
python - (python) 使用 threading.Timer 调用时的不同行为
我想制作一个基于 python 模块“mp3play”的小命令行音乐播放器。我想定期检查一首歌曲是否停止播放(并最终开始一首新歌曲),但用户应该能够在此期间输入新命令(如暂停音乐)。因此,我尝试为此使用 threading.Timer。但是,如果我在使用计时器调用的函数内,它会给我一个错误。正常调用函数时不会发生错误。这是我的(简化的)代码:
当第二次调用 rep() 时,它在函数 isplaying() 中给我一个 MCI 错误,说它无法读取设备。我的问题:
我在 threading.Timer 的工作方式上犯了错误吗?(我该如何解决?)除了 threading.Timer 之外,还有其他方法可以实现我想要的东西吗?
到目前为止,我的想法是,currentmusic
从另一个线程访问可能是一个问题,但我不确定。我也不知道如何避免它。
谢谢帮助
c# - 检测鼠标点击使用 MCI 命令播放的视频
我有一个播放视频的应用程序。我正在使用 MCI 播放视频并将其附加到面板控件。我在主窗体和所有控件上捕捉到鼠标点击,但是当我点击使用 MCI 播放的视频时,它不会检测到鼠标点击。
如何检测鼠标点击使用 MCI 命令播放的视频?
file-not-found - MCISendCommand 找不到文件,但 Fstream 可以,所以我知道它存在,为什么?
我正在尝试使用 MCISendCommand 播放 MIDI 文件,但我不断收到 DWORD 错误代码 275(找不到文件)。从那以后,我将相关代码放在确实找到文件的 fstream open 调用中。然后我关闭该文件以允许 MCISendCommand 代码访问它,但它仍然找不到该文件。
以下是相关代码:
我还应该提到,这段代码在我的迈克尔·莫里森 (Michael Morrison) 的教科书“开始游戏编程”中的示例项目中工作。据我所知,所有项目属性都是相同的。然而,由于某种原因,代码在我自己的项目中对我不起作用,即使我已经从示例项目中复制/粘贴了每一行代码(没有那么多,3/5 的小类)。