这两天利用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:
////// 初始化VLC控件 /// 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(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



