示例#1
0
        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);
                    });
                });
            }
        }
示例#2
0
 public VlcPlayer(Meta.Vlc.Wpf.VlcPlayer _player)
 {
     Player = _player ?? throw new ArgumentNullException(nameof(_player));
 }