private void SetMarkers() { mediaPlayer.MediaPlayer.PlaybackMediaMarkers.Clear(); var skips = Video.Markers.Where(x => x.Action == ActionType.Skip); skips = skips.OrderBy(x => x.StartPosition); skips = MergeOVerlaying(skips.ToList()); foreach (var marker in skips) { if (marker.TillEnd) { TimeSpan duration = GetNaturalDuration(); var markerStart = duration.Subtract(marker.TillEndDuration); var isBigger = markerStart > new TimeSpan(0); if (isBigger) { var playbackMarker = new PlaybackMediaMarker(markerStart, ActionType.Skip.ToString(), mediaPlayer.MediaPlayer.PlaybackSession.NaturalDuration.ToString()); mediaPlayer.MediaPlayer.PlaybackMediaMarkers.Insert(playbackMarker); } } else { var playbackMarker = new PlaybackMediaMarker(marker.StartPosition, ActionType.Skip.ToString(), marker.EndPosition.ToString()); mediaPlayer.MediaPlayer.PlaybackMediaMarkers.Insert(playbackMarker); } } }
private void PlayMarker_Click(object sender, RoutedEventArgs e) { if (sender is Button playMarker) { var marker = (Markers)playMarker.DataContext; mediaPlayer.MediaPlayer.PlaybackMediaMarkers.Clear(); var endPlaybackMarker = new PlaybackMediaMarker(marker.EndPosition, ActionType.RepeatSingle.ToString(), marker.StartPosition.ToString()); mediaPlayer.MediaPlayer.PlaybackMediaMarkers.Insert(endPlaybackMarker); mediaPlayer.MediaPlayer.PlaybackSession.Position = marker.StartPosition; mediaPlayer.MediaPlayer.Play(); resetRepeatButton.Visibility = Visibility.Visible; } }