问题描述
目前我正在使用 FFMPEG 在我用 Delphi 开发的 64 位应用程序中添加视频播放。
是否有任何控件或库可用于在我的 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 (将#修改为@)