基于libVlc开发Winform视频播放器

使用VLC库实现视频播放器(WPF版) 使用wpf制作一个视频播放器 一、 LibVLCSharp介绍 LibVLCSharp是基于VideoLAN的LibVLC库的.NET平台的跨平台音频和视频API。它提供了一个全面的多媒体API,可以跨移动、服务器和桌面使用,以呈现视频和输出音频。支持Mono、.NET Framework和.NET核心运行时。在vs工具中,只需要安装截图中得两个nuget包。 二、视频播放器的实现 视频播放器的实现需要用到两个比较nuget包中提供的类,MediaPlayer类。MediaPlayer类型用于控 阅读详情

最近在开发视频播放以及RTSP流媒体播放相关功能,接触到了libVlc库,赞叹其强大的同时也感叹C#调用其的困难,不过还好有了Vlc.DotNet开源库,这里记录下开发经历.

开始使用时并没发现什么问题,但是当仔细整理功能后发现问题不少,而且莫名其妙的出现,下面罗列一下:

1、界面上点击按钮弹出文件选择对话框后,判断DialogResult.Ok后进行文件播放这一个流程下来有一定的几率界面会卡死,这让我一度怀疑这个库,到现在我都没弄明白是为什么?但是我找到了解决办法,播放视频这个动作在OpenFileDialog控件的FileOk事件中去处理,这个问题就解决掉了....

2、在关闭视频播放的时候也有一定的几率会卡死,我真是很无语的,这里到现在我还没有完全弄清楚或者找到更好的解决办法,但是使用窗体的BeginInvoke异步委托去调用关闭方法会有极大的好转。

3、视频截图不能直接在按钮点击事件中触发,会有很大几率卡死,可以使用BackgroundWorker的DoWork事件去调用截图方法,可直接调用,然后在VLC控件的SnapShotTaken事件中获取截图成功消息并获取存储的文件路径。

4、不支持RTSP的视频录制功能,这里我修改了Vlc.DotNet的核心库增加了这个功能,就是调用Vlm开头的几个方法,原先库中并没有实现。

5、不管是截图还是视频录制竟然不支持中文~!!~存储路径有中文就更不行~!就无法成功录制或截图~!!~查找资料一顿折腾竟然发现libVlc支持的是UTF8编码,而C#的String类型是Unicode编码,不管你怎么折腾只要你是用String类型传送就是Unicode编码~!所以,所以我就又改了Vlc.DotNet的核心库,在库中底层转码并直接传送byte[],这样一切就OK了。。。

6、在退出程序的时候Vlc.DotNet库会清理相关资源,这时候会报异常,这里我增加了Release方法,可以提前调用以避免该异常的发生。

最后Stop停止播放视频的问题偶尔还是会出现的,特别是在FormClosing事件中,不知道谁有更好的办法?!

最后记录下libVlc用到的启动参数:

--demux=h264
--network-caching=500
--rtsp-tcp
--sout=

以上这些是用于播放RTSP视频用到的参数,--sout=用于视频录制参数输入

--no-video-on-top

这个是想不报每次打开视频就输出video out can not top这个异常,但貌似没用。。。。

--no-osd
--no-snapshot-preview

这些主要是截图不显示预览不显示文字

--high-priority

更高的优先级,心里安慰就加上了。。。

深入解析C#与Vlc.DotNet.Forms实现WinForm视频播放器的关键技术与实战 本文深入解析了使用C#与Vlc.DotNet.Forms开发WinForm视频播放器的关键技术,包括环境配置、基础播放功能实现、高级功能开发及性能优化。通过实战案例,展示了如何利用VLC的强大编解码能力支持多种视频格式,提升播放器稳定性和用户体验。 阅读详情

相关推荐

libVLC 捕捉鼠标事件(全屏/还原)

当用 libVLC 播放视频文件时,你是否尝试过捕获键盘、鼠标单击/双击事件呢?例如,在用户双击视频屏幕时最大化显示窗口! 之所以有此一问,是因为在默认情况下我们根本无法捕获这些事件,libVLC “吃”了它们,那么如何解决这个问题呢?

青春不老,奋斗不止! 4111

在C#中使用libVLC进行媒体播放

在C#中使用libVLC进行媒体播放

刺眼的博客 5189

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

ffmpeg c# x86_C#实现视频播放器

在介绍怎么用C#实现播放器之前,先说明下为什么选择C#。随着.NET Core的发布,使得.Net支持跨平台,并且支持独立打包的方式发布,使得使用C#开发不再需要依赖.Net环境。使用C#实现播放器,有以下几种方式:1、使用MediaPlayer ActiveX控件;2、使用VLC ActiveX控件3、使用LIB VLC库4、使用FFMPEG库第1、2种,都一定依赖客户端环境。如果客户...

weixin_39739234的博客 1701

C#实现视频播放器

C#实现视频播放器概述 使用C#实现播放器,有以下几种方式: 1、使用MediaPlayer ActiveX控件; 2、使用VLC ActiveX控件 3、使用LIB VLC库 4、使用FFMPEG库 第1、2种,都一定依赖客户端环境。如果客户端较少,可以人工维护的话,可以考虑。 第4种,使用ffmpeg,就拥有了更加底层的api了,此时可以实现更加强大的功能。并且它是跨平台的,对于移动平台的音视频开发也是非常有帮助的。 今天我们就是采用第3种方式,它不依赖客户端环境,在Github上也有比较完善的对它的封

跟老刘一起学编程 3422

C# WInForm VLC 视频框架基本使用

WinForm VLC 视频框架

m0_61628320的博客 1378

刚学C#,自己做的一个基于VLC的视频播放器,仅做备忘_winform播放视频控件 vlc

技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)一个人可以走的很快,但一群人才能走的更远!

m0_60607971的博客 1506

VS2010可直接运行的C# VLC桌面播放器源码(含完整libvlc依赖)

一套开箱即用的C#桌面视频播放器工程,基于VLC官方libvlc内核封装,使用Visual Studio 2010开发,无需额外安装或配置环境。项目已内置libvlc.dll和libvlccore.dll等核心动态库,全部放在bin\Debug目录下,解压后双击打开vlc.net.sln即可编译运行。支持x86架构,兼容主流Windows桌面系统。功能涵盖本地视频文件播放、RTSP/HTTP网络流拉取、基础控制(播放/暂停/停止/进度拖拽/音量调节/全屏切换),UI由WinForm实现,主窗体为Form1,

prometheus9mon的博客 206

C# Winform 视频流添加透明控件

Demo包含一些自定义控件(下拉列表,树形列表 , 图片列表等)均可实现透明效果。主窗体是一个海康相机的监控视频。使用时可替换成其他视频。

免安装VLC运行库的C#桌面视频播放器(含完整依赖)

双击就能用的WinForm视频播放工具,底层直接调用VLC官方SDK完成解码与渲染,不依赖系统已安装的VLC软件或额外插件。编译后生成的VLC视频播放器.exe自带libvlc.dll、libvlccore.dll和必需的plugins文件夹,所有依赖已打包进Debug目录,彻底规避DLL缺失问题。支持MP4、AVI、MKV、FLV等主流格式,提供播放/暂停/停止、音量调节、全屏切换、进度条拖拽等基础控制功能。源码基于VS2010开发,结构清晰:主界面在index.cs,播放逻辑封装在VlcPlayer.c

lemon的博客 231

VLC播放器(Winform) 直接调用Vlc库文件

目前主流的播放器都是调用VLC库(支持视频类型比较多且功能强大),主流视频网站采用的是流媒体传输协议,本列通过直接调用Vlc插件播放视屏文件(可播放离线m3u8文件)

基于Libvlc库的c#中可进行录制/录像功能源码

/// /// 创建VLC播放器 /// /// VLC 全局变量 /// VLC MediaPlayer需要绑定显示的窗体句柄 /// public static libvlc_media_player_t Create_MediaPlayer(libvlc_instance_t libvlc_instance, IntPtr handle) { libvlc_media_player_t libvlc_media_player = IntPtr.Zero; try { if (libvlc_instance == IntPtr.Zero || libvlc_instance == null || handle == IntPtr.Zero || handle == null) { return IntPtr.Zero; } //创建播放器 libvlc_media_player = SafeNativeMethods.libvlc_media_player_new(libvlc_instance); if (libvlc_media_player == null || libvlc_media_player == IntPtr.Zero) { return IntPtr.Zero; } //设置播放窗口 SafeNativeMethods.libvlc_media_player_set_hwnd(libvlc_media_player, (int)handle); return libvlc_media_player; } catch { SafeNativeMethods.libvlc_media_player_release(libvlc_media_player); return IntPtr.Zero; } }

c# 简易VLC播放RTMP视频流

c#简易Vlc播放RTMP视频流的项目,里面有些开发的步骤以及需要注意的地方,下载之后希望评论。

c# Winform VlcPlayer(支持在线播放)源代码

c# Winform VlcPlayer(支持在线播放)源代码

wj070621的博客 2215

C#通过LibVLCSharp来录制电脑屏幕

C#通过LibVLCSharp来录制电脑屏幕,vs2019工程,全部代码,可编译测试。

VLC.dotNet播放器-回调方式支持拉伸充满控件-兼容32位和64位.rar

基于VLC.dotNet.core编写的VLC播放器。 基本功能:播放、暂停、停止、快进、快退、按真实宽高比播放 特殊功能:支持拉伸充满控件、支持叠加LOGO、支持叠加透明图片(例如:箭头) 实现方式:通过lock回调、unlock回调、display回调,将解码后的视频显示到控件区域,支持拉伸模式和真实宽高比模式。(解码回调与libvlc基本一致) 视频长度、进度的判断,都在回调中实现,不需要使用定时器。 本源码从省级视频监控平台中抽取,经过大量测试,功能正确、稳定可靠。 欢迎参考利用。

上一篇: C#Winform调用libEasyPlayer总结
下一篇: 基于KEIL RTX CMSIS-RTOS在STM32单片机上的一些使用心得
路过&
博客等级 码龄19年 126粉丝 91原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值