gpt4 book ai didi

Delphi:启动 MCI 时出现 EMCIDeviceError

转载 作者:行者123 更新时间:2023-12-03 15:13:25 24 4
gpt4 key购买 nike

我使用 TMediaPlayer 组件来播放音乐。

它适用于我的大多数轨道。但它不适用于某些轨道。当我想播放它们时,显示以下错误消息:

alt text

这是德语,但大致意思是:

在项目 pMusicPlayer.exe 中发生了 EMCIDeviceError 类的异常。消息:“启动 MCI 时出错。”。进程被停止。继续“单个命令/语句”或“开始”。

调用TMediaPlayer的Play过程后,程序直接退出。

以下文件发生此错误:

  • 文件大小:7.40 MB
  • 时长:4:02 分钟
  • 比特率:256 kBit/s

我已使用 128 kBit/s 的比特率对该文件进行编码,因此文件大小为 3.70 MB:工作正常!

第一个文件有什么问题? Windows Media Player 或其他程序可以毫无问题地播放它。

Delphi 的 TMediaPlayer 是否可能无法处理大文件(例如 > 5 MB)或高比特率文件(例如 > 128 kBit/s)?

我可以做什么来解决这个问题?

附加问题:为什么我不能使用 try/except 来阻止消息窗口?

  try
Player.Play;
except
showmessage('Cannot be played');
end;

这不起作用。

最佳答案

好的,我找到了问题的根源。我用的是这个小Delphi MP3 Player Tutorial (你可以 download project there )来测试你的 MP3 文件,我得到了与你的 MP3 相同的错误。

经过一些测试,我发现其他 MP3 文件可以在该教程应用程序中正常播放。您的 MP3 与 Windows Media Player 和其他多媒体播放器配合良好。

是的,重新编码文件可以解决问题,但这不是真正的问题。问题来自 MP3 的元数据(ID3 标签),而不是声音编码本身。

我用了Mp3tag 删除文件上的标签,之后一切都运行良好,没有 EMCIDeviceError。

似乎 TMediaPlayer 可能会因某种格式的元数据而崩溃。在搜索过程中,我还看到了 TMediaPlayer 的错误报告,其中包含包含 JPEG 封面艺术的 MP3 文件。

我在论坛上回答有关 TMediaPlayer 的错误的大多数人都说 TMediaPlayer 确实过时了,而且通常很糟糕(我认为它已经有 10 年没有更新了)。如果您希望在应用程序中提供强大的 MP3 支持,请考虑使用 another component 。您还可以在 Delphi 应用程序中使用 Windows Media Player ActiveX。

对于有关 try/except 的其他问题,请尝试以下操作:

try
//load & play here
except
on E:Exception do
ShowMessage('Cannot be played! ' + E.Message);
end;

或者如果 TApplicationEvents 没有捕获错误,请考虑使用它。

关于Delphi:启动 MCI 时出现 EMCIDeviceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com