Vlc.DotNet 库终于解决了 WPF 开发的 Airspace 问题

Vlc.DotNet 是一个封装 libvlc 的第三方.net库。而所谓 Airspace(翻译为:空域)问题是指在使用 WPF 开发的时候,没办法像使用普通的WPF控件一样来使用这个 VLC控件,具体表现为控件无法响应鼠标事件,并且控件永d } V B [ ^ /远处于顶层无法在其上一层放置任何子控件等。这些对于一个需1 x : 4 % g 9要和用户进行诸多交互的播放器来说是致命的。

前记

早些时候用 C#. 5 F WPF 尝试做了一个简单的Demo,为解决“空域”问题k r M k ^ l Y Y,在VLC控L W 9 K M件上覆盖一个独立Form窗体,并设置为透明,s 2 f最终无法控制两个窗体同步而放弃,后来使用经过改良的pupop控件,但是pupop无法超出屏幕边缘 X - s r,会自动k F ~ + 2变换位置,导致不确定因素,也只能搁置。

Vlc.DotNet 库终于解决了 WPF 开发的 Airspace 问题

2019年3月份发布的 V3 M $ c M * 8lc.DotNet 3.0 新版本已经解决+ e V空域问题,但w M p m ]是官方还是建议尽量使用 winform 的方式去做,性能~ D b效率都会优秀很多。

示例

1、VS使用 NuGet 搜索 安装 “VLC.DOtNet.T n l T w dWpf”
2、Xaml:添加Vlc的引用:

xmlns:vlc="clr-namesL ? c g !pace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
&m ~ ` V u w Mlt;vlc:VlcControl x:Name="vlcPlayer" />

3、cs文件

using System.IO;
using System.Wiu H Undows;
using System.Windows.Input;
namespace VLC3
{
public partial clau { ! Z $ K h j fss MainWindow : Window
{
public MainWindow()k $ O | V
{
InitializeCompo6 h X - % ) =nent();
string currentDirectory = @"D:\Program Files\VideoLAN\VLC";
var vlcLibDirectory = new DirectoryInfo(currentDirectory);
var options = new string[]
{
"--file-logging",B 6 @ ( "-vvv", 9 ? )"--logfile=Logs.log"
};
//初始化播放器
this.vl8 b - c 9cPlayer.SourceProvider.CreatePlf 4 8 u / y ;ayer(vlcLibDix K d orectory, options);
//设置播放源
this.vlcPlayer.SourceProvider.Me+ ( B # 5 1diaPlayer.Play(N ] J new: + ; x 9 Uri(@"J:\Movie\123456.mkv"));//本地文件。
this.vlcPlayg 4 ` r . rer.MouseDoubleClick += VlcPlayer_MouseDof C A B FubleClick;
}
private void VlcPlayer_MouseDoubleClick(object se8 7 y |nder, MouseBH ] Y L 5 UuttonEventArgs e)
{
MessageBox.Show("响应鼠标4 N 3 - !双击事件!");
}
}
}

注意:解] 9 R 1 ; T p码器可以直接引用PC上安装的VLC播放器的目录,或者拷贝到项^ F * A @ . .文件夹内做R } d E引用。如2 ^ I % c 1 - 果使用的是64位的VLC解码器,则 VS 工程项目也必须设置为 x64 状态下调试,否则报错无法运行

Vlc.DotNet 库终于解决了 WPF 开发的 Airspace 问题

后记

然后呢,现在VLC官方也有了自己的 libvlcsharp 库,这是跨平台的.net库,很想用,毕竟趋势是官方大一统,但折腾了半天 Demo都没跑起来,太难了我。

一年多都没去关注了,突然会回头去看是因为,最近看到PT和BL播放器显示EPG的方式是在视频上左侧,然后半透明显示,虽然觉得PC端空间足够宽裕,可以不用像在手机上一样挤在一起,但着C w J a & :并不代表这种显示方式不好,由于WPF 可以更容易地做出这类效果,站长希望以后在黑鸟播放器也可选择是独立窗口显示EPG 还是在视频上左侧半透明显示EPG,对,两个都要。