一、VLC播放库简介
FFMPEG和VLC的关系:VLC调用了FFMPEG的库;
FFMPEG和libav的关系:libav是FFMPEG的开发人员中独立出来一部分后创建的一个新的工程。
VLC.DotNet类库:
(1)Vlc.DotNet.Forms :是包含winform界面控件的库,使用的时候需要加入到工具箱,在拖拽到界面;是对VLC.DotNet.Core的再次封装。
(2)Vlc.DotNet.Wpf : 包括wpf的,在hood方式下是使用WinForm控件;
(3)Vlc.DotNet.Core : 基础依赖包,如果是转换、编解码、做服务不需要界面的,可以考虑用这个来实现。
出处
二、环境配置
1、libvlc
下载VideoLAN.LibVLC.Windows.3.0.8.1可获取:
到VLC官网下载vlc播放器安装包可达到同样的目的(在安装路径中获取)。
把这三个文件放到项目bin\Debug文件夹下。
附:
在NuGet管理器安装包失败的解决方法:https://www.cnblogs.com/Mars-0603/p/17119323.html
2、VlcControl
如果是使用VlcControl控件开发,除了VideoLAN.LibVLC.Windows.3.0.8.1的三个文件外,还需要:
Vlc.DotNet.Core.Interops.3.1.0:Vlc.DotNet.Core.Interops.dll
Vlc.DotNet.Core.3.1.0:Vlc.DotNet.Core.dll
Vlc.DotNet.Forms.3.1.0:Vlc.DotNet.Forms.dll(如果是WPF则下载Vlc.DotNet.WPF.3.1.0)
如果有现成的dll就不需要再在NuGet管理器下载包了,但这几个包的版本号一定要一致,否则添加控件会报错。
把这几个dll也放到项目bin\Debug文件夹下。
(1)如果是Winform,则在设计器工具箱右键点击“选择项...”,在“.NET FrameWork组件”选项卡中点击“浏览”,然后选择Vlc.DotNet.Forms.dll,就可以添加VlcControl控件了。
(2))如果是WPF,则添加命名空间:
xmlns:vlc="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"
引用控件:
<vlc:VlcControl x:Name="VlcControl1"/>
三、例程
C#编写的基于VLC的播放器(libvlc):https://blog.csdn.net/u012342996/article/details/51271596
基于VLC库C#开发可播放摄像头及任意格式视频的播放器(WPF):https://www.shuzhiduo.com/A/GBJr09wZd0/
(源码我都有,评论留邮箱可发)
四、问题汇总
1、VlcControl回放视频文件时截图不成功
调用vlcControl1.TakeSnapshot(Path);一直返回false,后来发现是vlcControl1.SetMedia(new Uri(filePath), options);时options参数配置影响的。
我是在别人例程的基础上改的代码,原来的配置是:
options = new[] { ":sout=#duplicate{dst=display,dst=std{access=file,mux="+ed+",dst="+dest+"}}", ":sout-keep", ":sout-all", ":sout-audio", ":sout-audio-sync", };
其中
":sout=#duplicate{dst=display,dst=std{access=file,mux="+ed+",dst="+dest+"}}"
意思是VLC播放视频的同时,将视频保存为dest指定的文件。把这一句注释掉以后就可以保存截图了。
duplicate模块功能简介:https://blog.csdn.net/u012459903/article/details/89402843
其他的options参数含义见:https://blog.csdn.net/csdn_zxw/article/details/114264625
2、libvlc.dll实现暂停后再播放,画面花屏
找遍全网也没找到这个解决办法。后面换成直接用VlcControl控件来开发,发现没有这个问题,而且各功能实现也更简单。
标签:控件,C#,Vlc,VlcControl,dll,libvlc,DotNet,VLC From: https://www.cnblogs.com/Mars-0603/p/17129823.html