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

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

1, NuGet 添加 VideoLAN.LibVLC.Windows

  1. NuGet 添加 LibVLCSharp.WPF

  2. wpf 代码如下:

XML 复制代码
 <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>
  1. .cs代码如下:
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设置为0
            if (_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();
      }
    }
相关推荐
Java Fans8 小时前
在WPF项目中集成Python:Python.NET深度实战指南
python·.net·wpf
布伦鸽16 小时前
C# WPF 左右布局实现学习笔记(1)
笔记·学习·c#·wpf
code bean2 天前
【WPF】WPF 项目实战:构建一个可增删、排序的光源类型管理界面(含源码)
wpf
沉到海底去吧Go2 天前
【图片识别改名】如何批量将图片按图片上文字重命名?自动批量识别图片文字并命名,基于图片文字内容改名,WPF和京东ocr识别的解决方案
ocr·wpf·图片识别改名·图片识别重命名·图片内容改名
lph19722 天前
自定义事件wpf
wpf
code bean2 天前
【WPF】从普通 ItemsControl 到支持筛选的 ItemsControl:深入掌握 CollectionViewSource 用法
wpf
碎碎念的安静2 天前
WPF可拖拽ListView
c#·wpf
界面开发小八哥3 天前
界面组件DevExpress WPF中文教程:Grid - 如何识别行和卡片?
.net·wpf·界面控件·devexpress·ui开发
TwilightLemon4 天前
WPF 使用CompositionTarget.Rendering实现平滑流畅滚动的ScrollViewer,支持滚轮、触控板、触摸屏和笔
wpf
Vae_Mars6 天前
WPF中自定义消息弹窗
wpf