C# Winform开发程序调用VLC播放器控件播放视频.
VLC是个好东西,支持的格式多,还无广告,关键还有调用它的播放控件不用安装.
开个文章记录下调用这个控件的流水账,以便以后需要的时候查阅
创建工程
首先新建一个Winform工程.

这里姑且叫做VLC.Test吧
复制文件
在自己的项目目录里创建一个Lib目录,里面再创建一个VLC目录,
在VLC的安装目录能找到这三个 文件/文件夹 复制到自己的项目里


在项目属性里配置生成事件
这一步的效果是在编译程序的时候能自动把库文件复制到输出目录. 毕竟在创建git仓库的时候是要屏蔽输出目录的.
xcopy "$(ProjectDir)\Lib\VLC\*" "$(ProjectDir)$(OutDir)" /s /e /r /h /d /y

对API进行声明
由于VLC的DLL是Native DLL,在C#中需要进行声明才能用,不过好在这条路已经有人走过了:
借用这个文章写的一个Class(文章末尾会附带git地址)
添加测试视频
在工程里添加了一个视频,并设置自动复制到输出目录


编写代码
将这几行代码加在窗口的load事件中:
VlcPlayer.VlcPlayerBase VlcPlayerBase = new VlcPlayer.VlcPlayerBase(Environment.CurrentDirectory + "\\vlc\\plugins\\");
VlcPlayerBase.SetRenderWindow(pictureBox1.Handle.ToInt32());
VlcPlayerBase.LoadFile("银河与极光.mp4");
VlcPlayerBase.Play();
运行即可播放.
播放效果

代码获取
C# Winform开发程序调用VLC播放器控件播放视频.的更多相关文章
- 使用VideoView自定义一个播放器控件
介绍 最近要使用播放器做一个简单的视频播放功能,开始学习VideoView,在横竖屏切换的时候碰到了点麻烦,不过在查阅资料后总算是解决了.在写VideoView播放视频时候定义控制的代码全写在Actv ...
- C#播放器控件的常用方法介绍
右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Player wmp.dll 添加 [ ...
- winform子窗口调用父窗口的控件及方法-一般调用
首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数: ...
- 在WinForm应用程序中,使用选项卡控件来加载不同的Form界面!
TabPage tp=new TabPage(); your选项卡控件.Controls.Add(tp); From1 frm=new Form1(); frm.TopLevel = false; f ...
- Delphi 媒体播放器控件
樊伟胜
- FFmpeg简易播放器的实现-音视频同步
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10284653.html 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- winform快速开发平台 -> 快速绑定ComboBox数据控件
通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...
- winform快速开发平台 -> 基础组件之分页控件
一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...
- EasyPlayerPro windows播放器本地音频播放音量控制实现
背景描述 作为一个播放器, 除了能播放视频和声音外,音量控制是绝对不能缺少的功能; 本文在音视频播放的基础上,增加对音量的控制: 实现流程 调用mixerGetDevCaps获取音频输出设备列表; 打 ...
随机推荐
- Dapper使用技巧分享
Dapper是轻量级的.net ORM框架,配合linq和泛型,让C#操作数据的代码简洁.高效又灵活!最近的工作项目中使用了Dapper,在这里分享一些实用技巧.阅读之前需要了解一些基本的使用方法,参 ...
- 安装网卡ifconfig不出现问题
安装万兆网卡,Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection 使用lspci ...
- deep learning RNN
specialize vi. 专攻;特化;专门从事;详细说明 vt.使专门化;使适应特殊情况;详细说明;列举 generalize across vt.& vi.概括,归纳;推广,普及;使 ...
- Egret_简单的封装方法
////////////随机颜色***////////////////////////// private getRdmClr(): number { return (Math.floor(Math. ...
- java 删除多层文件夹
/** * 因为不小心,写了一个死循环,在电脑里创建的了n多层空文件夹 * 并且手动最外层删除不掉. * 所以用写了本代码,从里向外的进行删除操作. * @author Singularity * @ ...
- freemarker demo
<!--freemarker--> <dependency> <groupId>org.springframework.boot</groupId> & ...
- ACM山东工商 栈和队列算法练习
#include <stdio.h>#include <stdlib.h> #define SIZE 20 typedef struct hold{ char sign[S ...
- Dotnetty 的心跳
只要你不按照实例中使用libuv,就不会有问题了. 主要区别在于 WorkerEventLoopGroup 和 MultithreadEventLoopGroup 之间.
- IPv6实验1_IPv6地址配置
IPv6地址配置 实验任务 (1)掌握如何在路由器及PC上配置IPv6地址 (2)掌握如何用IPv6 ping命令进行IPv6地址可达性检查 (3)掌握如何用命令来查看IPv6地址配置 实验过程 在R ...
- 利用python实现两个文件夹的同步
其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了. WINDOWS : xcopy 源文件夹\* 目标文件夹 /s /e /y Linux : ...