zoukankan      html  css  js  c++  java
  • WPF 基于VLC播放器的视频控件

    VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。(官网地址:https://www.videolan.org/vlc/index.zh.html)

    这里要实现的就是基于Vlc.DotNet.Wpf调用VLC播放器,完成一个简单的WPF视频播放控件。

    Vlc.DotNet.Wpf 初始化播放器控件

    通过Nuget安装Vlc.DotNet.Wpf,自动添加相关引用。这里需要注意引用的nuget版本。不同版本dll的内部层级不同,体现在代码上就是调用方式的区别了

    Install-Package Vlc.DotNet.Wpf -Version 3.1.0
    

    Vlc.DotNet.Core
    Vlc.DotNet.Core.Interops
    Vlc.DotNet.Wpf

    初始化VLC控件关键代码:

    VlcControl vlcControl = null;
    string VLCPath = "VLC播放器安装目录";
    void InitVLCPlayer(string url)
    {
        this.vlcControl = new VlcControl();
        this.ControlContainer.Content = vlcControl;
        this.vlcControl.SourceProvider.CreatePlayer(new System.IO.DirectoryInfo(VLCPath));
        if (!string.IsNullOrWhiteSpace(url))
        {
            vlcControl.SourceProvider.MediaPlayer.Play(new Uri(url));
        }
    }
    
    1. 调用VLC播放器时,需要注意播放器版本是X64的还是X86的。相应的需要修改当前应用程序的平台为对于版本。
      比如我安装的是X64的播放器,则需要在配置管理器中修改配置为X64。

    1. 单独提取下面几个VLC播放器的文件也可以实现

    常用的API和Event

    //暂停
    this.vlcControl.SourceProvider.MediaPlayer.Pause();
    //播放
    this.vlcControl.SourceProvider.MediaPlayer.Play();
    //音量控制
    this.vlcControl.SourceProvider.MediaPlayer.Audio.Volume = 100;
    //倍数控制
    this.vlcControl.SourceProvider.MediaPlayer.Rate = 1.5f;
    //视频长度 单位:ms
    var len = this.vlcControl.SourceProvider.MediaPlayer.Length;
    //全屏
    this.vlcControl.SourceProvider.MediaPlayer.Video.FullScreen = true;
    
    //进度变化事件
    this.vlcControl.SourceProvider.MediaPlayer.PositionChanged += MediaPlayer_PositionChanged;
    

    通过这些API和相关的事件绑定,基本上一个简单视频播放控件就出来了。

    最后需要注意的是,如果主程序没有关闭,只是关闭了视频播放窗口,页面是消失了,但是实际上VLC播放器还运行,只有声音没有画面。目前想到的办法也只是在视频播放窗口添加一个Window_Closing事件,主动注销控件this.vlcControl?.Dispose();

    总结

    整个过程下来并不复杂,只是简单的熟悉控件一些API后就可以上手了,可能最需要花心思的反而是控件的一些交互和样式上的调整。之后有空调整下样式后再提供个Demo上来吧。(虽然感觉这么说了以后,就不会再有心思来搞这个了~~~)

  • 相关阅读:
    Java上传图片
    git下拉项目失败,报错 RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
    关于Java项目启动后浏览器访问本机磁盘里的图片报错Not allowed to load local resource
    window安装Redis和springboot整合Redis进行简单使用
    Java强弱密码校验,必须包含大小写字母、数字、特殊符号
    工作记录:C# ashx生成验证码图片及校验
    springboot配置逆向工程
    mysql学习总结(二)
    ISM模型:用python实现可达矩阵求解和层级划分
    mysql学习总结(一)
  • 原文地址:https://www.cnblogs.com/cplemom/p/13956092.html
Copyright © 2011-2022 走看看