TMediaPlayer错误 - 不支持的媒体文件

时间:2015-03-07 01:38:09

标签: delphi media-player firemonkey delphi-xe7

我正在尝试从Firemonkey XE7 Windows应用程序播放mp3文件。这应该是一个简单的任务,通过放置一个TMediaPlayer组件,为其分配一个.mp3文件,然后播放它。但是,我收到以下错误:

Application Error
Exception EReadError in module MediaPlayerTest.exe at 00000000000012139E.
Error reading MediaPlayer1.FileName: Unsupported media file testfile.mp3.

我也试过.wav,它也没用。 (已经安装了音频编解码器,Windows媒体播放器可以成功播放媒体文件。)

然后我尝试在另一台计算机上编译相同的程序,它可以成功编译并且mp3播放就可以了。

有谁知道为什么它不能在一台计算机上编译而在另一台计算机上编译?

5 个答案:

答案 0 :(得分:1)

XE7使用DirectX进行音频/视频播放。可能有些东西搞砸了你的directx安装。我首先在VMWare虚拟机上发现了这个问题,TMediaPlayer无法播放任何不支持所有文件类型的内容。但是在我的主机上运行的相同程序工作正常。

尝试重新安装DirectX。

答案 1 :(得分:0)

我有一些非常相似的错误。

并且有多个案例:

  1. mp3中的问题。有些Mp3不受标准TMediaPlayer的支持。可以通过注册您的编解码器(查看列表项目3)

  2. 来修复
  3. 如果您尝试使用TMedia,则无法打开任何媒体文件,直到 您没有在代码的任何位置创建TMediaPlayer并填充 它的FileName属性。这很奇怪,因为 如果你有,TMediaCodecManager.RegisterMediaCodecClass('.mp3', SVMP3Files, TMediaType.Audio, TWindowsMediaCodec);会被调用 FMX.Media 在使用中。

  4. 编解码器中的问题。您可以在 FMX.Media.Win 单元中找到示例,了解如何为您的应用注册新的编解码器。

  5. 希望这些信息能为您提供帮助。

答案 2 :(得分:0)

同样的问题在VM中,主机...在其他几台PC上进行了测试,但结果相同。 Delphi 10.2。

我将其追踪到FMX.Media.Win中的TWindowsMedia.InitVideoMixingRenderer9,其中包括计算结果:

成功(FVMRFilterConfig9.SetRenderingMode(VMR9Mode_Windowless));

GetLastError返回126,

ERROR_MOD_NOT_FOUND
126 (0x7E)
The specified module could not be found.

更改传入VMR9Mode_Renderless的调用(至少对我而言)。我没有深入研究为什么/这是什么。我也只是播放音频,没有视频。

只是想我会通过一个解决方法以防万一。

答案 3 :(得分:0)

当安装在VM中时,这似乎是Direct X的限制。我安装了其他媒体编解码器(the basic k-lite codec pack),此后播放器工作正常,无需更改任何代码。另外,提交了bug report,希望R&D可以解决该问题

答案 4 :(得分:-1)

我不熟悉XE7,但在早期版本中,TMediaplayer使用了windows mediaplayer。因此,该行为依赖于计算机上Windows播放器的实际安装版本。这解释了两台计算机上的不同行为。 您还可以使用外部播放器,如真实播放器或其他播放器。使用shellexecute启动外部播放器。第三方播放器提供更多细节来运行mp3。