使用wpf制作一个视频播放器

一、 LibVLCSharp介绍

LibVLCSharp是基于VideoLAN的LibVLC库的.NET平台的跨平台音频和视频API。它提供了一个全面的多媒体API,可以跨移动、服务器和桌面使用,以呈现视频和输出音频。支持Mono、.NET Framework和.NET核心运行时。在vs工具中,只需要安装截图中得两个nuget包。

二、视频播放器的实现

视频播放器的实现需要用到两个比较nuget包中提供的类,MediaPlayer类。MediaPlayer类型用于控制播放、设置渲染器、提供事件等等。

简单看下其内部实现

提供了很多属性让我们去获取还有设置视频播放信息,见名知意,这里就一一说明每个的作用了。

其次该类中还定义了大量的时间处理程序让我们可以自定义视频播放过程,自己所要进行个性化操作。如下图:

另外补充还有另外的vlc视频播放器的第三方库使用。

使用方法也是一模一样的。

三、代码演示

(这里采用的是上边说明第二个库)

界面代码:

<Window x:Class="VLCPlayer.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:VLCPlayer"xmlns:vlc="clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf"mc:Ignorable="d"Closed="Window_Closed"Title="MainWindow" Height="450" Width="800"><Grid><Grid.RowDefinitions><RowDefinition Height="9.5*"></RowDefinition><RowDefinition Height="0.5*"></RowDefinition></Grid.RowDefinitions><vlc:VlcControl Grid.Row="0" x:Name="vlcPlayer" /><Button Grid.Row="1"Width="120"Click="Button_Click" ></Button></Grid>
</Window>

code-bebind后台代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Vlc.DotNet.Core;namespace VLCPlayer
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();//VLC播放器的安装位置,我的VLC播放器安装在D:\Program Files (x86)\VideoLAN\VLC文件夹下。string currentDirectory = @"D:\VideoLAN\VLC";var vlcLibDirectory = new DirectoryInfo(currentDirectory);var options = new string[]{//添加日志"--file-logging", "-vvv", "--logfile=Logs.log"// VLC options can be given here. Please refer to the VLC command line documentation.};//初始化播放器this.vlcPlayer.SourceProvider.CreatePlayer(vlcLibDirectory, options);// //加载libvlc库并初始化内容。在调用此方法之前,要设置好选项和lib目录//设置播放源this.vlcPlayer.SourceProvider.MediaPlayer.Play(new Uri(@"F:\迅雷下载\阳光电影www.ygdy8.com.敢梦有爱.BD.1080p.中英双字幕.mkv"));//本地文件。#region 播放网络流//this.vlcPlayer.SourceProvider.MediaPlayer.Play(new Uri("rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov"));//Rtsp流文件。// this.vlcPlayer.SourceProvider.MediaPlayer.Play(new Uri("rtmp://10.160.64.244:1935/live/room"));#endregion//暂停this.vlcPlayer.SourceProvider.MediaPlayer.Pause();//音量控制this.vlcPlayer.SourceProvider.MediaPlayer.Audio.IsMute = false;//播放速度this.vlcPlayer.SourceProvider.MediaPlayer.Rate = float.Parse("2");//this.vlcPlayer.SourceProvider.MediaPlayer.Playing += new EventHandler<Vlc.DotNet.Core.VlcMediaPlayerPlayingEventArgs>(PlayingEvent);this.vlcPlayer.SourceProvider.MediaPlayer.Paused += new EventHandler<Vlc.DotNet.Core.VlcMediaPlayerPausedEventArgs>(PausedEvent);}private void PlayingEvent(object sender, VlcMediaPlayerPlayingEventArgs e){MessageBox.Show("播放视频!");}bool tag = true;private void PausedEvent(object sender, Vlc.DotNet.Core.VlcMediaPlayerPausedEventArgs args){  MessageBox.Show("视频暂停了!"); }private void Window_Closed(object sender, EventArgs e){}private void Button_Click(object sender, RoutedEventArgs e){//暂停if (tag){this.vlcPlayer.SourceProvider.MediaPlayer.Pause();tag = !tag;}else{this.vlcPlayer.SourceProvider.MediaPlayer.Play();tag = !tag;}}}
}

运行效果:

有些小伙伴可能嫌弃播放器太丑了,这里大家先看看具体使用步骤就可以。

给大家看看美化后的效果。

如果在结合好看的界面库,就更容易做成好看的界面效果了。

使用VLC库实现视频播放器(WPF版)相关推荐

  1. Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 需求 使用OpenCV库的视频播放器(支持播放器操作,如暂停.恢复 ...

  2. 最简单的基于DirectShow的示例:视频播放器自定义版

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

  3. QT使用vlc实现在线视频播放器

    VlcPlayer 介绍 qt使用libvlc实现的在线视频播放器,支持拖动进度条改变播放进度,支持改变音量,静音等操作 软件架构 vlc目录包含了libvlc相应的库文件 VLCPlayer目录包含 ...

  4. Android本地文件点击视频播放器vitamio版

    本博客用Android studio集成了vitamio的自定义视频播放器,同时可以在文件管理中选择播放,想要一个自己的视频播放器这边便可以满足 实现具体功能如下: 1.sd卡内存视频文件的点击播放; ...

  5. Android本地视频播放器mediaplay版

    本文为自定义的视频播放器,可进行屏幕切换(由于换屏时大小变化,电脑截图就分开截图了),效果如下图: --------------播放视频概括: SurfaceView+MediaPlayer以及 Vi ...

  6. 播放器android版最新官方版下载安装,腾讯视频播放器下载安装2017-腾讯视频播放器安卓版2017下载v8.2.23.21341 安卓版-腾牛安卓网...

    腾讯视频播放器2017最新版上线,每次更新都会有不同的新增功能,优化软件性能让用户拥有更舒适的观影体验,播放器还可以根据你的观影喜好推荐合适的影片. 应用特点: 万能播放,超强的解码功能 具有超强的多 ...

  7. WPF+VLC 写一个视频播放器(一、搭建环境)

    一.初识VLC 官方网址:https://www.videolan.org/ VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体 ...

  8. 基于VLC的本地视频播放器

    这两天利用Vlc.DotNet.Forms做了一个WinForm版本的本地视频文件播放器,可以实现文件播放.暂停.进度条拖拽.截图功能,在这里做一个简单的记录. 使用工具:VS2019 , VLC 3 ...

  9. QT应用编程:基于VLC开发音视频播放器(句柄方式)

    一.环境介绍 操作系统: win10 64位 QT版本:  QT5.12.6 编译器:  MinGW 32 VLC版本: 3.0.12 功能说明:  下面的播放器例子支持基本播放器的功能. 1.  支 ...

最新文章

  1. Can't connect to X11 window server using ':1.0' as the value of the DISPLAY variable.
  2. android studio 第一个程序显示radle d 'https://services.gradle.org/distributions/gradle-5.4.1-all.zip'.
  3. shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
  4. float foo=42e1为什么错_为什么重写了equals()也要重写hashCode()
  5. linux 定时java程序,Linux操作系统上定时运行Java程序的方法
  6. aop框架 php,xaop: 支持三种模式的AOP框架,弥补PHPer的不足,并且自带了文档的解析类库,可以一并使用,性能极好,欢迎 STAR 与 FORK。...
  7. 如何解决安卓项目在Android Studio无法打开
  8. 蓝桥杯 基础练习 特殊回文数
  9. VS 2017 透明背景设置
  10. IT人的算法书单:挖掘程序的灵魂
  11. matlab ode 实数,关于ode45中erf函数(输入必须为实数完全数的报错问题)
  12. Linux服务器网络运维监控软件
  13. 系统梳理总结JAVA全栈知识点,七面阿里成功斩获P8Offer
  14. selenium之action_chains模块(鼠标操作)
  15. 红旗linux操作系统怎样,红旗linux操作系统应该怎么用
  16. 魔鬼交易员害了法兴银行却救了全球经济?
  17. 《人民日报》发文探讨区块链,新风口还是概念炒作?
  18. Java毕设项目大学生租房平台(java+VUE+Mybatis+Maven+Mysql)
  19. kali 2020 换源、中文支持
  20. 005基于Hilbert振动分解的神经网络癫痫发作预测-2020

热门文章

  1. 黑苹果 制作虚拟机CDR镜像(详细的教程,别再翻了!)
  2. 联发科最新资料下载:MT6771 ATM’s
  3. python迅雷下载进度_python 之实现断点下载与下载进度条
  4. 软件安全性能测试(转载)
  5. javascript中childNodes与children 区别 以及firstChild与firstElementChild区别
  6. Pca,Kpca,TSNE降维非线性数据的效果展示与理论解释
  7. MSN客户端广告新形式
  8. win环境golang安装
  9. ジェイド / Jade
  10. 用wireshark抓包分析TLS协议