当前位置: 首页 > news >正文

WPF 使用LibVLCSharp.WPF实现视频播放、停止、暂停功能

使用LibVLCSharp.WPF实现视频播放、停止、暂停功能

1, NuGet 添加 VideoLAN.LibVLC.Windows

2. NuGet 添加 LibVLCSharp.WPF

3. wpf 代码如下:

 <Grid ><Grid.RowDefinitions><RowDefinition Height="*" /><RowDefinition Height="40" /><!-- <RowDefinition Height="40" /> --></Grid.RowDefinitions><wpf:VideoView Name="VlcControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /><StackPanel  Grid.Row="1" Orientation="Horizontal"><Button   Content="播放" Click="Play_OnClick"></Button><Button   Content="停止" Click="Stop_OnClick"  Width="80"></Button><Button   Content="暂停"  Click="Pause_OnClick"  Width="80"></Button></StackPanel></Grid>

4.  .cs代码如下:

    public partial class MainWindow : Window{private LibVLC _libVLC;private MediaPlayer _mediaPlayer;public MainWindow(){InitializeComponent();Core.Initialize();// 初始化 LibVLC_libVLC = new LibVLC();_mediaPlayer = new MediaPlayer(_libVLC);VlcControl.MediaPlayer = _mediaPlayer;}private void MainWindow_Loaded(object sender, RoutedEventArgs e){//取整设置成刚好的网格大小}private void PlayOrPauseButton_Checked(object sender, RoutedEventArgs e){this.Play();}private void PlayOrPauseButton_Unchecked(object sender, RoutedEventArgs e){}private void Play(){//调用Play()时,MediaElement会将其Position设置为0if (_mediaPlayer.State == VLCState.Paused){var oldTime = _mediaPlayer.Time;_mediaPlayer.Play();_mediaPlayer.Time = oldTime;}else{string filePath = @"E:\1.avi";_mediaPlayer.Play(new Media(_libVLC, new Uri(filePath, UriKind.RelativeOrAbsolute)));}}private void Stop_OnClick(object sender, RoutedEventArgs e){_mediaPlayer.Stop();}private void Pause_OnClick(object sender, RoutedEventArgs e){_mediaPlayer.Pause();}private void Play_OnClick(object sender, RoutedEventArgs e){Play();}}

http://www.lryc.cn/news/506381.html

相关文章:

  • Java全栈项目 - 校园招聘信息平台
  • java导出
  • 【嵌入式系统】期末试题库,ARM处理器,CortexM3内核,USART,EXTI,GPIO
  • arcgisPro相接多个面要素转出为完整独立线要素
  • QTday1
  • SAP ALV选择列排序时弹出定义排序顺序窗口问题
  • CSS Backgrounds(背景)
  • 欧拉计划 Project Euler 27 题解
  • 迁移学习--fasttext概述
  • 【数字信号处理】数字信号处理试题及答案,离散序列,Z变换,傅里叶变换
  • CNN、RNN、LSTM和Transformer之间的区别和联系
  • springboot448教学辅助系统(论文+源码)_kaic
  • 用QT制作的倒计时软件
  • 基于 mzt-biz-log 实现接口调用日志记录
  • docker容器的安装以及用法
  • Java中的Consumer接口应该如何使用(通俗易懂图解)
  • D102【python 接口自动化学习】- pytest进阶之fixture用法
  • 从零玩转CanMV-K230(4)-小核Linux驱动开发参考
  • 上汽大通汽车CAN数据解析开发服务及技术商用领域详细解析
  • 基于SCUI的后台管理系统
  • 使用频谱分析仪:RBW,Res BW,分辨率带宽;Sweep,扫描;noise floor,底噪,如何降低底噪?
  • 项目管理工具Maven(一)
  • 阿里云ESC服务器一次性全部迁移到另一个ESC
  • 搭建分布式Kafka集群
  • 【后端面试总结】深入解析进程和线程的区别
  • java版电子招投标采购|投标|评标|竞标|邀标|评审招投标系统源码
  • SSM 赋能 Vue 助力:新锐台球厅管理系统的设计与实现的辉煌之路
  • C++ 并发专题 - C++线程同步的几种方法
  • 使用Python脚本进行编写批量根据源IP进行查询的语句用于态势感知攻击行为的搜索
  • Python中的zip/unzip:像拉拉链一样组合数据的艺术