Exemple #1
0
 private async Task ClearVideoElement(bool seek)
 {
     await Task.Run(async() =>
     {
         await VideoElement.Stop();
         Dispatcher.Invoke(() =>
         {
             VideoElement.Position = new TimeSpan(0);
             VideoElement.Source   = null;
             VideoElement.Dispose();
             VideoElement = null;
             VideoElementBorder.Visibility = Visibility.Hidden;
             VideoElement = new Unosquare.FFME.MediaElement
             {
                 IsMuted        = true,
                 LoadedBehavior = MediaState.Manual,
                 Visibility     = System.Windows.Visibility.Visible,
             };
             VideoElement.MediaOpened += VideoElement_MediaOpened;
             VideoElement.MediaFailed += VideoElement_MediaFailed;
             VideoElement.MediaEnded  += (sender, e) => { VideoElement.Position = TimeSpan.FromSeconds(0); };
             if (seek)
             {
                 VideoElement.SeekingStarted += (sender, e) => { };
                 VideoElement.SeekingEnded   += (sender, e) =>
                 {
                     if (!_videoPlay)
                     {
                         return;
                     }
                     PlayMedia();
                 };
             }
             VideoElementBorder.Children.Add(VideoElement);
         });
     });
 }