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上來吧。(雖然感覺這么說了以后,就不會再有心思來搞這個了~~~)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM