访问冲突尝试使用 Delphi Sydney 使用 WindowsMediaPlayer ActiveX 组件播放 MP4 文件

问题描述

我尝试制作一个应用来播放 mp4 文件

我已按照 https://blogs.embarcadero.com/add-windows-media-player-to-your-delphi-applications/ 中的建议导入 WindowsMediaPlayer ActiveX 控件,但是当我执行播放命令时,总是收到错误消息 access violation at xxxxx,其中 xxxxx 是 c:\WINDOWS\sysWOW64\D3D9.DLL 中的地址。

编辑

代码

    unit Uvideo;

interface

uses
  Winapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.ComCtrls,Vcl.MPlayer,Vcl.ExtCtrls,Vcl.StdCtrls,Vcl.OleCtrls,WMPLib_TLB;

type
  TForm7 = class(TForm)
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    Button1: TButton;
    WindowsMediaPlayer1: twindowsMediaPlayer;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);
begin
    WindowsMediaPlayer1.URL := 'file://H:\SYstemFOLDERS\videos\WinXVideos\L533.mp4';
    WindowsMediaPlayer1.controls.play; // the AV raises even without this statement
end;

end.

新编辑

使用上面的代码,我可以播放 mp3,但不能播放 mp4。

如果我使用...

begin
WindowsMediaPlayer1.openPlayer('file://H:\SYstemFOLDERS\videos\WinXVideos\L533.mp4');
end

...它播放 mp4 文件(但在第二个媒体播放器上下文中)。

我的 Delphi 是 Win32,我已经将组件导入为 win32。

问题是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)