如何在我的 Delphi 应用程序中集成 VLC 媒体播放器

问题描述

目前我正在使用 FFMPEG 在我用 Delphi 开发的 64 位应用程序中添加视频播放。

我在某处读到 VLC 媒体播放器功能更强大且功能更多。

是否有任何控件或库可用于在我的 64 位应用程序中在表单上的给定位置播放视频。

我需要的一件特别的事情是能够在播放过程中根据用户的配置跳过几帧。

我确实尝试过 VLC,但 VLC 网站上提供的代码示例仅适用于 32 位应用程序,不适用于 64 位应用程序。

这是初始化VLC的代码

var
  sL: TStringList;
  VLCPath: string;
begin
  // load vlc library
  VLCPath := ExtractFilePath(Application.ExeName);
  VLCPath := VLCPath + 'vlc';
  //VLCPath := VLCPath + 'vlc64';

  vlclib := LoadVLCLibrary(VLCPath);
  if vlclib = 0 then begin
    Showmessage('Load vlc library Failed');
    Exit;
  end;
  // sL will contains list of functions fail to load
  sL := TStringList.Create;
  if not LoadVLCFunctions(vlclib,sL) then begin
    Showmessage('Some functions Failed to load : ' + #13#10 + sL.Text);
    FreeLibrary(vlclib);
    sL.Free;
    Exit;
  end;
  sL.Free;```

Code for playing video:
procedure TfrmMain.btnPlayClick(Sender: TObject);
var
  VidFile: PAnsiChar;
begin
  VidFile := PAnsiChar(AnsiString(ExtractFilePath(Application.ExeName) + 'videos\Happy.mp4'));

  // create new vlc instance
  vlcInstance := libvlc_new(0,nil);
  // create new vlc media from file
  vlcmedia := libvlc_media_new_path(vlcInstance,VidFile);

  // if you want to play from network,use libvlc_media_new_location instead
  // vlcmedia := libvlc_media_new_location(vlcInstance,'udp://@225.2.1.27:5127');

  // create new vlc media player
  vlcmediaPlayer := libvlc_media_player_new_from_media(vlcmedia);

  // Now no need the vlc media,free it
  libvlc_media_release(vlcmedia);

  // play video in a TPanel,if not call this routine,vlc media will open a new window
  libvlc_media_player_set_hwnd(vlcmediaPlayer,Pointer(pnlMain.Handle));

  // play media
  libvlc_media_player_play(vlcmediaPlayer);
end; ``` 

TIA

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...