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));
}
}
- 調用VLC播放器時,需要注意播放器版本是X64的還是X86的。相應的需要修改當前應用程序的平台為對於版本。
比如我安裝的是X64的播放器,則需要在配置管理器中修改配置為X64。
- 單獨提取下面幾個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上來吧。(雖然感覺這么說了以后,就不會再有心思來搞這個了~~~)