private void LoadPlayer() { var exts = new string[] { ".mp4", ".avi", ".webm", ".wmv", ".mov", ".mkv", ".flv", ".rmvb" }; var dir = AppDomain.CurrentDomain.BaseDirectory + "Videos"; #if DEBUG dir = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos); #endif videos = Directory.GetFiles(dir) .Where(f => exts.Contains(System.IO.Path.GetExtension(f))) .ToArray(); if (videos.Length < 1) { MessageBox.Show("未包含任何影片,请添加后重启!"); Process.Start(dir); this.Close(); return; } switch (AppSettings["Codec"].ToLower()) { case "ffmpeg": if (Environment.Is64BitProcess) { Unosquare.FFME.Library.FFmpegDirectory = AppDomain.CurrentDomain.BaseDirectory + "FFmpeg.4.1.1\\x64"; } else { Unosquare.FFME.Library.FFmpegDirectory = AppDomain.CurrentDomain.BaseDirectory + "FFmpeg.4.1.1\\x86"; } var player2 = new Unosquare.FFME.MediaElement { Volume = 1, Stretch = Stretch.Fill, LoadedBehavior = Unosquare.FFME.Common.MediaPlaybackState.Manual, Source = new Uri(videos[0], UriKind.Absolute) }; player2.BeginInit(); root.Children.Insert(1, player2); player2.MediaEnded += OnMediaEnded; player2.MediaOpening += OnMediaOpening; player2.MediaOpened += OnMediaOpened; player2.EndInit(); break; case "vlc": if (Environment.Is64BitProcess) { Meta.Vlc.Wpf.ApiManager.Initialize(@"LibVlc\x64", new string[] { "-I", "dummy", "--ignore-config", "--no-video-title", "--rtsp-tcp" }); } else { Meta.Vlc.Wpf.ApiManager.Initialize(@"LibVlc\x86", new string[] { "-I", "dummy", "--ignore-config", "--no-video-title", "--rtsp-tcp" }); } var player1 = new Meta.Vlc.Wpf.VlcPlayer { Volume = 1, Stretch = Stretch.Fill, }; player1.Initialized += (s, e) => { player1.LoadMedia(videos[0]); }; root.Children.Insert(1, player1); player1.StateChanged += OnStateChanged; player1.LengthChanged += OnLengthChanged; player1.VideoFormatChanging += (s, e) => { if (e.Width > this.ActualWidth && this.ActualWidth > 0) { var w = this.ActualWidth; var h = w * e.Height / e.Width; e.Width = (uint)w; e.Height = (uint)h; } }; break; default: var player3 = new MediaElement { Volume = 1, Stretch = Stretch.Fill, LoadedBehavior = MediaState.Manual, Source = new Uri(videos[0], UriKind.Absolute) }; player3.MediaEnded += OnMediaEnded; player3.MediaOpened += OnMediaOpened; root.Children.Insert(1, player3); break; } if (AppSettings["AutoPlay"].ToLower() == "true") { Task.Delay(200).ContinueWith((t) => { this.Dispatcher.Invoke(() => { this.Play(1); }); }); } }
public VlcPlayer(Meta.Vlc.Wpf.VlcPlayer _player) { Player = _player ?? throw new ArgumentNullException(nameof(_player)); }