Delphi使用PasLibVlc播放视频

delphi10.2播放视频,使用PasLibVlc_3.0.3.zip第三方控件
第一步安装PasLibVlc_3.0.3.zip
链接:https://pan.baidu.com/s/1xu6YcquYtEIrCbQqC1hwEw
提取码:fYTu
解压之后如图所示
在这里插入图片描述

下载好了控件之后选择对应的版本,本实例通过delphi10.2编程实现,选择DelphiXE10文件夹,选择PasLibVlcPlayer.dproj文件打开,
在这里插入图片描述

打开项目,在资源区如图所示
在这里插入图片描述

鼠标右键点击PasLibVlcPlayer.bpl,先选择bulid,在选择install,实现PasLibVlcPlayer控件安装成功
在这里插入图片描述

新建一个项目,在项目中导入PasLibVlc安装目录下两个文件路径,具体如图所示

引用,PasLibVlcPlayerUnit,PasLibVlcUnit, PasLibVlcClassUnit三个单元,在FORM1的private中新增p_li和p_li两个对象,以及播放初始化,播放停止,开始播放,播放结释放函数等四个函数声明,
private
{ Private declarations }
p_li : libvlc_instance_t_ptr;
p_li : libvlc_media_player_t_ptr;
procedure PlayerInit();
procedure PlayerStop();
procedure PlayerPlay(fileName: WideString);
procedure PlayerDestroy();
下面是以上四个函数实现
procedure TForm1.PlayerInit();
begin
// libvlc_dynamic_dll_init_with_path(‘C:\Program Files (x86)\VideoLAN\VLC’);
libvlc_dynamic_dll_init();

if (libvlc_dynamic_dll_error <> ‘’) then
begin
MessageDlg(libvlc_dynamic_dll_error, mtError, [mbOK], 0);
Application.Terminate;
exit;
end;

with TArgcArgs.Create([
libvlc_dynamic_dll_path,
‘–intf=dummy’,
‘–ignore-config’,
‘–quiet’,
‘–no-video-title-show’,
‘–no-video-on-top’
]) do
begin
p_li := libvlc_new(ARGC, ARGS);
Free;
end;

if (p_li <> NIL) then
begin
p_mi := libvlc_media_player_new(p_li);
end;
end;

procedure TForm1.PlayerStop;
begin
if (p_mi <> NIL) then
begin
if (libvlc_media_player_is_playing(p_mi) = 1) then
begin
libvlc_media_player_stop(p_mi);
Sleep(50);
while (libvlc_media_player_is_playing(p_mi) = 1) do
begin
Sleep(50);
end;
end;
libvlc_media_player_release(p_mi);
p_mi := NIL;
Sleep(50);
end;
end;
PlayerPlay函数的参数就是视频文件路径,
libvlc_media_player_set_display_window(p_mi, pl_PlayVedio.Handle);这一行的pl_PlayVedio.Handle就是指定播放视频的位置,pl_PlayVedio是我设置播放视频的一个panel,播放视频可以使用panel,tabsheet,都可以实现播放。
procedure TForm1.PlayerPlay(fileName: WideString);
var
p_md : libvlc_media_t_ptr;
begin
if (p_li <> NIL) then
begin
p_md := libvlc_media_new_path(p_li, PAnsiChar(UTF8Encode(fileName)));
if (p_md <> NIL) then
begin
if (p_mi <> NIL) then
begin
// libvlc_video_set_key_input(p_mi, 1);
// libvlc_video_set_mouse_input(p_mi, 1);
libvlc_media_player_set_display_window(p_mi, pl_PlayVedio.Handle);
libvlc_media_player_set_media(p_mi, p_md);
libvlc_media_player_play(p_mi);
end;
libvlc_media_release(p_md);
end;
end;
end;

procedure TForm1.PlayerDestroy;
begin
if (p_li <> NIL) then
begin
PlayerStop();
libvlc_release(p_li);
p_li := NIL;
end;
libvlc_dynamic_dll_done();
end;

猜你喜欢

转载自blog.csdn.net/xdAndSx/article/details/124311333