这两天利用Vlc.DotNet.Forms做了一个WinForm版本的本地视频文件播放器,可以实现文件播放、暂停、进度条拖拽、截图功能,在这里做一个简单的记录。
使用工具:VS2019 , VLC 3.0.11。
1、安装Vlc.DotNet.Forms
在项目NuGet管理中引入对应的依赖包,如下图。
2、获取Vlc.DotNet依赖的VLC类库
从官网(https://www.videolan.org/vlc/index.zh.html)下载VLC播放器安装包,本项目使用版本为vlc-3.0.11-win32.exe,解压安装包获取如下图所示的相关组件,复制到项目编译生成目录下。
3、使用VlcControl控件
VLC类库安装成功后(步骤1)即可使用封装好的VlcControl控件(WinForm自定义控件)进行视频播放相关操作,在工具箱中可以看到此控件,可以直接拖拽到界面使用。
动态创建VlcControl:
/// <summary>
/// 初始化VLC控件
/// </summary>
private void InitVlcControl()
{
this.pnlVideo.SuspendLayout();
this.vlcControl = new VlcControl();
// 开始初始化
this.vlcControl.BeginInit();
this.vlcControl.BackColor = Color.Black;
this.vlcControl.Dock = DockStyle.Fill;
this.vlcControl.Spu = -1;
// 设置VLC依赖组件目录
this.vlcControl.VlcLibDirectory = new DirectoryInfo(Path.Combine(Application.StartupPath, "vlclib"));
this.vlcControl.VlcMediaplayerOptions = null;
this.vlcControl.Stopped += new EventHandler<VlcMediaPlayerStoppedEventArgs>(this.vlcControl_Stopped);
this.pnlVideo.Controls.Add(this.vlcControl);
// 初始化完成
this.vlcControl.EndInit();
this.pnlVideo.ResumeLayout();
}
注意:
(1)必须调用BeginInit();方法开始进行初始化,否则VlcControl无法初始化成功,报错“未将对象引用设置到对象的实例”;
(2)必须设置VLC类库目录到VlcLibDirectory,否则无法编译,这里设置为程序所在目录下的“vlclib”文件夹,即步骤2中dll复制到的目录。
播放、暂停、截图等功能的实现比较简单,仅需调用VlcControl提供的接口方法即可实现。
// 播放本地文件
vlcControl.SetMedia(new Uri(videoFilePath));
vlcControl.Play();
// 暂停
vlcControl.Pause();
// 停止
vlcControl.Stop();
// 截图保存到指定文件
vlcControl.TakeSnapshot(imageSavePath);
// 设置进度,position为进度百分比,等于1时会停止播放
vlcControl.Position = position;
参考博文: https://www.cnblogs.com/kiba/p/11303137.html