WPF 基于VLC播放器的视频控件

VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。(官网地址:https://www.videolan.org/vlc/index.zh.html)

这里要实现的就是基于Vlc.DotNet.Wpf调用VLC播放器,完成一个简单的WPF视频播放控件。

Vlc.DotNet.Wpf 初始化播放器控件

通过Nuget安装Vlc.DotNet.Wpf,自动添加相关引用。这里需要注意引用的nuget版本。不同版本dll的内部层级不同,体现在代码上就是调用方式的区别了

Install-Package Vlc.DotNet.Wpf -Version 3.1.0

Vlc.DotNet.Core
Vlc.DotNet.Core.Interops
Vlc.DotNet.Wpf

初始化VLC控件关键代码:

VlcControl vlcControl = null;
string VLCPath = "VLC播放器安装目录";
void InitVLCPlayer(string url)
{
    this.vlcControl = new VlcControl();
    this.ControlContainer.Content = vlcControl;
    this.vlcControl.SourceProvider.CreatePlayer(new System.IO.DirectoryInfo(VLCPath));
    if (!string.IsNullOrWhiteSpace(url))
    {
        vlcControl.SourceProvider.MediaPlayer.Play(new Uri(url));
    }
}
  1. 调用VLC播放器时,需要注意播放器版本是X64的还是X86的。相应的需要修改当前应用程序的平台为对于版本。
    比如我安装的是X64的播放器,则需要在配置管理器中修改配置为X64。

  1. 单独提取下面几个VLC播放器的文件也可以实现

常用的API和Event

//暂停
this.vlcControl.SourceProvider.MediaPlayer.Pause();
//播放
this.vlcControl.SourceProvider.MediaPlayer.Play();
//音量控制
this.vlcControl.SourceProvider.MediaPlayer.Audio.Volume = 100;
//倍数控制
this.vlcControl.SourceProvider.MediaPlayer.Rate = 1.5f;
//视频长度 单位:ms
var len = this.vlcControl.SourceProvider.MediaPlayer.Length;
//全屏
this.vlcControl.SourceProvider.MediaPlayer.Video.FullScreen = true;

//进度变化事件
this.vlcControl.SourceProvider.MediaPlayer.PositionChanged += MediaPlayer_PositionChanged;

通过这些API和相关的事件绑定,基本上一个简单视频播放控件就出来了。

最后需要注意的是,如果主程序没有关闭,只是关闭了视频播放窗口,页面是消失了,但是实际上VLC播放器还运行,只有声音没有画面。目前想到的办法也只是在视频播放窗口添加一个Window_Closing事件,主动注销控件this.vlcControl?.Dispose();

总结

整个过程下来并不复杂,只是简单的熟悉控件一些API后就可以上手了,可能最需要花心思的反而是控件的一些交互和样式上的调整。之后有空调整下样式后再提供个Demo上来吧。(虽然感觉这么说了以后,就不会再有心思来搞这个了~~~)

原文地址:https://www.cnblogs.com/cplemom/p/13956092.html