Delphi:使用DSPack播放mp4文件

时间:2014-06-13 21:51:37

标签: delphi directshow dspack

我一直在玩DSPack,它可以播放avi和wmv文件,但它不播放mp4文件。我已经安装了ffdshow编解码器,但它仍然不会播放任何其他格式。我在某处读到了我需要使用ffdshow过滤器,但是关于如何操作的文档非常有限......有人可以帮助我吗?

修改

这是我在播放任何其他格式时得到的错误

raised exception class EDirectShowException with message 'C ($80040265).'. Process stopped. Use Step or Run to continue.

那就是弹出异常的函数

function CheckDSError(HR: HRESULT): HRESULT;
  var Excep: EDirectShowException;
  begin
    Result := HR;
    if Failed(HR) then
    begin
      Excep := EDirectShowException.Create(format(GetErrorString(HR)+' ($%x).',[HR]));
      Excep.ErrorCode := HR;
      raise Excep;
    end;
  end;

修改 我安装了haali解复用器,安装后它是一个自安装程序,我仍然得到同样的错误。和gdcl解复用器,这两个dll文件,关于如何使用它们的任何建议?

PS:我从未使用过编解码器和/或这类东西,很抱歉这么厚,而且我使用的是Windows 7 x64

2 个答案:

答案 0 :(得分:1)

我可以使用" DSVideoWinDowEx \ PlayWin"成功播放* .mp4文件与DSPack一起提供的演示应用程序。 Windows 7包含mp4编解码器,所以这应该不是问题。确保您没有在调试模式下运行应用程序,因为如果调试器处于活动状态,许多编解码器将拒绝工作。

Haalie Media Splitter不用于我的测试* .mp4文件。但它使用AC3Filter。所以你的问题也可能是缺少音频编解码器。

如果这不能解决问题,那么问题可能是:"为什么它在您的PC上不起作用?" 为了进一步缩小问题范围,请尝试使用GraphEdit或GraphStudio播放视频,看看是否有效。这些工具还将显示使用的过滤器图形。您还可以显示DSPack应用程序中使用的FilterGraph。

如果在系统上安装DirectShow过滤器(编解码器),它将由DirectShow / DSPack自动使用。您可以通过调用regsvr32 "path_to_codec.ax"手动在系统中注册过滤器,但这通常由安装程序完成。可以在DirectShow中手动使用过滤器,但大多数情况下不需要这样做。

答案 1 :(得分:1)

lavfilters提供了源分割器和解码器所需的一切。它是开源的,积极开发并基于ffmpeg。如果您在安装lavfilters后无法播放mp4,那么我会说mp4本身存在问题。在这种情况下,使用类似ffprobe的内容来检查文件或发布文件的链接。