首页 > 编程语言 >【C#】VlcControl、libvlc使用汇总

【C#】VlcControl、libvlc使用汇总

时间:2023-02-17 13:34:49浏览次数:53  
标签:控件 C# Vlc VlcControl dll libvlc DotNet VLC

一、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

相关文章

  • Oracle不同机器使用nfs挂载磁盘命令
    hpunixmount-Fnfs-orw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp,suid,forcedirectio172.16.8.90:/xtts/xttsaixmount-tnfs-o......
  • javascript的一些基础知识
    随手记录一些javascript的一些基础知识,之前只是简单用到javascript,并没有了解其中的概念。1. JavascriptObject:InJavaScript,almost"everything"isanobject.......
  • 图文详解CDC技术,看这一篇就够了!
    这篇文章是对变更数据捕获(CDC)实践的介绍,而不是对特定工具的深入探讨。假设我们正在构建一个简单的Web应用程序。在大多数情况下,此类项目从最小的数据架构开始。例......
  • 【和ChatGPT对话】学习使用时序数据库
    前言和小结从昨天的文章来看【和ChatGPT对话】就让它帮我做完成绩数据分析、【和ChatGPT对话】帮助新手批量提取图片文字信息到文件,ChatGPT完成基本的数据处理业务已经在......
  • vue2 - 自定义插件 使用插件,scoped
    1.自定义插件myPlugin.jsexportdefault{install(Vue){console.log("Vue.use()会调用此方法",Vue)}} 2.使用插件importVuefrom'vue'importAp......
  • Python OpenCV给证件照换底色
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Callable的基本使用和源码解读
    1使用java.util.concurrent.Callable是有返回值的多线程任务:publicinterfaceCallable<V>{Vcall()throwsException;}通过实现Callable接口,在call()方......
  • 【MySQL-SQL优化:主键,order by,group by,limit,count,update】
    零、本文纲要一、插入数据二、主键优化三、orderby优化四、groupby优化五、limit优化六、count优化七、update优化update优化tips:Ctrl+F快速定位到所需内容阅读吧。一、......
  • 图解 K8S OOM 和 CPU 节流
    介绍使用Kubernetes时,内存不足(OOM)错误和CPU节流是云应用程序中资源处理的主要难题。这是为什么?云应用程序中的CPU和内存要求变得越来越重要,因为它们与您的云成本......
  • C# 委托原理刨析,外加和事件对比
    什么是委托委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。在实例化委托时,你可以将其实例与任何具有兼容参数和返回类型的方法进行绑定。你可以通过......