private void MediaPlayer_Opened(object sender, RoutedEventArgs args) { _Phase = Phase.Opened; // If a shutdown request has occured during the opening process, then we execute our shutdown if (_ShutdownRequest) { Shutdown(); } else { if (MediaOpened != null) { MediaOpened.Invoke(sender, args); } // If another open request has occured during the opening process, then we execute that open if (_OpenRequest != null) { Uri uri = _OpenRequest; _OpenRequest = null; // Null thee request before using it so that unexpected things will not happen // Feed the request back into the Open() function Open(uri); } } }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; if (Source == null) { return; } try { // Reset player TryDisposePlayer(); InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; SetVideoSource(((MediaSource)Source).Uri); _player.PrepareAsync(); MediaOpened?.Invoke(this, null); } catch (global::System.Exception ex) { OnMediaFailed(ex); } }
private void Player_MediaStarted(object sender, EventArgs e) { MediaOpened?.Invoke(this, e); //Dispatcher.Invoke(() => { // Player.Volume((int)GetValue(VolumeProperty)); //}); }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; // Reset player TryDisposePlayer(); if (Source == null) { return; } try { InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; _player.CurrentItem?.RemoveObserver(_observer, new NSString("duration"), _player.Handle); _player.CurrentItem?.RemoveObserver(_observer, new NSString("status"), _player.Handle); _player.CurrentItem?.RemoveObserver(_observer, new NSString("loadedTimeRanges"), _player.Handle); switch (Source) { case MediaPlaybackList playlist: Play(playlist); break; case MediaPlaybackItem item: Play(item.Source.Uri); break; case MediaSource source: Play(source.Uri); break; default: throw new InvalidOperationException("Unsupported media source type"); } _player.CurrentItem.AddObserver(_observer, new NSString("duration"), NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(_observer, new NSString("status"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(_observer, new NSString("loadedTimeRanges"), NSKeyValueObservingOptions.Initial | NSKeyValueObservingOptions.New, _player.Handle); _player.CurrentItem.SeekingWaitsForVideoCompositionRendering = true; // Adapt pitch to prevent "metallic echo" when changing playback rate _player.CurrentItem.AudioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.TimeDomain; MediaOpened?.Invoke(this, null); } catch (Exception ex) { OnMediaFailed(ex); } }
internal void PostMediaOpenedEvent(MediaInfo mediaInfo) { LogEventStart(nameof(MediaOpened)); Library.GuiContext.EnqueueInvoke(() => { MediaOpened?.Invoke(this, new MediaOpenedEventArgs(mediaInfo)); LogEventDone(nameof(MediaOpened)); }); }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; // Reset player TryDisposePlayer(); if (Source == null) { return; } try { InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; _player.CurrentItem?.RemoveObserver(_observer, new NSString("duration"), _player.Handle); _player.CurrentItem?.RemoveObserver(_observer, new NSString("status"), _player.Handle); _player.CurrentItem?.RemoveObserver(_observer, new NSString("loadedTimeRanges"), _player.Handle); if (Source is MediaPlaybackList) { var items = ((MediaPlaybackList)Source).Items; foreach (var item in items) { var asset = AVAsset.FromUrl(DecodeUri(item.Source.Uri)); _player.InsertItem(new AVPlayerItem(asset), null); } } else { var nsAsset = AVAsset.FromUrl(DecodeUri(((MediaSource)Source).Uri)); var streamingItem = AVPlayerItem.FromAsset(nsAsset); _player.ReplaceCurrentItemWithPlayerItem(streamingItem); } _player.CurrentItem.AddObserver(_observer, new NSString("duration"), NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(_observer, new NSString("status"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(_observer, new NSString("loadedTimeRanges"), NSKeyValueObservingOptions.Initial | NSKeyValueObservingOptions.New, _player.Handle); _player.CurrentItem.SeekingWaitsForVideoCompositionRendering = true; // Adapt pitch to prevent "metallic echo" when changing playback rate _player.CurrentItem.AudioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.TimeDomain; MediaOpened?.Invoke(this, null); } catch (Exception ex) { OnMediaFailed(ex); } }
public async Task Open(Video video, TimeSpan?position) { if (video != null) { await MediaPlayer.Open(new Uri(video.Path)); MediaPlayer.Position = position ?? TimeSpan.Zero; MediaOpened?.Invoke(this, new MediaOpenedEventArgs(video)); } }
public void Player_MediaOpened(object sender, EventArgs e) { Dispatcher.Invoke(() => { if (IsWindow && !Window.GetWindow(this).IsVisible) { Window.GetWindow(this).Show(); } SeekBar.Maximum = Duration; SetControlsEnabled(true); MediaOpened?.Invoke(this, new EventArgs()); }); }
protected override void OnApplyTemplate() { MediaElement = (MediaElement)GetTemplateChild("MainMediaElement"); if (MediaElement != null) { MediaElement.CurrentStateChanged += (s, e) => CurrentStateChanged?.Invoke(this, e); MediaElement.MediaEnded += (s, e) => MediaEnded?.Invoke(this, e); MediaElement.MediaOpened += (s, e) => MediaOpened?.Invoke(this, e); MediaElement.MediaFailed += (s, e) => MediaFailed?.Invoke(this, e); MediaElement.SeekCompleted += (s, e) => SeekCompleted?.Invoke(this, e); MediaElement.VolumeChanged += (s, e) => VolumeChanged?.Invoke(this, e); } base.OnApplyTemplate(); }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; if (Source == null) { return; } try { // Reset player TryDisposePlayer(); InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; var nsAsset = AVAsset.FromUrl(DecodeUri(((MediaSource)Source).Uri)); var streamingItem = AVPlayerItem.FromAsset(nsAsset); _player.CurrentItem?.RemoveObserver(this, new NSString("duration"), _player.Handle); _player.CurrentItem?.RemoveObserver(this, new NSString("status"), _player.Handle); _player.CurrentItem?.RemoveObserver(this, new NSString("loadedTimeRanges"), _player.Handle); _player.ReplaceCurrentItemWithPlayerItem(streamingItem); _player.CurrentItem.AddObserver(this, new NSString("duration"), NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(this, new NSString("status"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, _player.Handle); _player.CurrentItem.AddObserver(this, new NSString("loadedTimeRanges"), NSKeyValueObservingOptions.Initial | NSKeyValueObservingOptions.New, _player.Handle); _player.CurrentItem.SeekingWaitsForVideoCompositionRendering = true; // Adapt pitch to prevent "metallic echo" when changing playback rate _player.CurrentItem.AudioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.TimeDomain; // Disable subtitles if any var mediaSelectionGroup = _player.CurrentItem.Asset.MediaSelectionGroupForMediaCharacteristic(AVMediaCharacteristic.Legible); if (mediaSelectionGroup != null) { _player.CurrentItem.SelectMediaOption(null, mediaSelectionGroup); } MediaOpened?.Invoke(this, null); } catch (Exception ex) { OnMediaFailed(ex); } }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; // Reset player TryDisposePlayer(); if (Source == null) { return; } try { InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; Uri uri; switch (Source) { case MediaPlaybackList playlist when playlist.Items.Count > 0: SetPlaylistItems(playlist); uri = _playlistItems[0]; break; case MediaPlaybackItem item: uri = item.Source.Uri; break; case MediaSource source: uri = source.Uri; break; default: throw new InvalidOperationException("Unsupported media source type"); } SetVideoSource(uri); _player.PrepareAsync(); MediaOpened?.Invoke(this, null); } catch (global::System.Exception ex) { OnMediaFailed(ex); } }
protected virtual void InitializeSource() { PlaybackSession.NaturalDuration = TimeSpan.Zero; PlaybackSession.PositionFromPlayer = TimeSpan.Zero; // Reset player TryDisposePlayer(); if (Source == null) { return; } try { InitializePlayer(); PlaybackSession.PlaybackState = MediaPlaybackState.Opening; if (Source is MediaPlaybackList) { _playlistItems = new List <Uri>(); var playlist = Source as MediaPlaybackList; foreach (var mediaItem in playlist.Items) { _playlistItems.Add(mediaItem.Source.Uri); } } var uri = _playlistItems?.Count > 0 ? _playlistItems[0] : ((MediaSource)Source).Uri; SetVideoSource(uri); _player.PrepareAsync(); MediaOpened?.Invoke(this, null); } catch (global::System.Exception ex) { OnMediaFailed(ex); } }
private void CountingStartTimeOffset(MediaPlayer sender, object args) { if (!isInitialReady) { ++renderedCounts; if (renderedCounts > 2) { StartOffset = sender.PlaybackSession.Position; renderedCounts = 0; isInitialReady = true; MediaPlayer.VideoFrameAvailable -= CountingStartTimeOffset; MediaPlayer.VideoFrameAvailable += MediaPlayer_VideoFrameAvailable; MediaPlayer.IsVideoFrameServerEnabled = false; MediaStatus = FrameMediaStatus.Opened; MediaOpened?.Invoke(this, null); } } }
internal void RaiseMediaOpened() { MediaOpened?.Invoke(this, EventArgs.Empty); }
private void MediaElement_MediaOpened(object sender, RoutedEventArgs e) { MediaOpened.IfNotNull(i => i(this)); }
private void Player_MediaOpened(object player, EventArgs args) { MediaOpened.IfNotNull(i => i(this, null)); }
private void HandleMediaOpened(object?sender, RoutedEventArgs?e) { MediaOpened?.Invoke(sender, new OnlyMMediaOpenedEventArgs()); }
protected virtual void OnMediaOpened() { MediaOpened?.Invoke(this, EventArgs.Empty); }
private void Player_MediaOpened(MediaPlayer sender, object args) { MediaOpened?.Invoke(sender, args); }
private void HandleMediaOpened(object sender, RoutedEventArgs e) { MediaOpened?.Invoke(sender, e); }
protected void RaiseMediaOpened() { MediaOpened?.Invoke(); }