public override void ViewDidLoad() { base.ViewDidLoad(); VideoLocal.Layer.CornerRadius = 10; VideoInternet.Layer.CornerRadius = 10; VideoLocal.TouchUpInside += delegate { AVPlayer Reproductor; AVPlayerLayer CapaRedproductor; AVAsset Recurso; AVPlayerItem RecursoReproducir; Recurso = AVAsset.FromUrl(NSUrl.FromFilename("toystory.mp4")); RecursoReproducir = new AVPlayerItem(Recurso); Reproductor = new AVPlayer(RecursoReproducir); CapaRedproductor = AVPlayerLayer.FromPlayer(Reproductor); CapaRedproductor.Frame = new CGRect(50, 100, 300, 300); View.Layer.AddSublayer(CapaRedproductor); Reproductor.Play(); }; VideoInternet.TouchUpInside += delegate { AVPlayer Reproductor; AVPlayerLayer CapaRedproductor; AVAsset Recurso; AVPlayerItem RecursoReproducir; Recurso = AVAsset.FromUrl(NSUrl.FromString("https://www.rmp-streaming.com/media/bbb-360p.mp4")); RecursoReproducir = new AVPlayerItem(Recurso); Reproductor = new AVPlayer(RecursoReproducir); CapaRedproductor = AVPlayerLayer.FromPlayer(Reproductor); CapaRedproductor.Frame = new CGRect(50, 100, 300, 300); View.Layer.AddSublayer(CapaRedproductor); Reproductor.Play(); }; }
public override void ViewDidLoad() { base.ViewDidLoad(); bool IsFirstLogin = NSUserDefaults.StandardUserDefaults.BoolForKey("SmallVidIntro"); if (IsFirstLogin) { avasset = AVAsset.FromUrl(NSUrl.FromFilename("an1.mp4")); } else { avasset = AVAsset.FromUrl(NSUrl.FromFilename("an2.mp4")); NSUserDefaults.StandardUserDefaults.SetBool(true, "SmallVidIntro"); } avplayerItem = new AVPlayerItem(avasset); avplayer = new AVPlayer(avplayerItem); avplayerLayer = AVPlayerLayer.FromPlayer(avplayer); avplayerLayer.Frame = View.Frame; View.Layer.AddSublayer(avplayerLayer); avplayer.Play(); NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, MainScreenHandler); }
private void LoadVideoDescView() { NSArray views = NSBundle.MainBundle.LoadNib("VoteVideoDescView", this, new NSDictionary()); if (1 == views.Count) { UIView tempView = Runtime.GetNSObject(views.ValueAt(0)) as UIView; if (tempView is VoteImageDescView) { var descView = tempView as VoteImageDescView; descView.UpdateUIWith(SelectedVote); descView.Frame = new System.Drawing.RectangleF(0, 0, (float)View.Bounds.Width, (float)View.Bounds.Height); View.AddSubview(descView); _asset = AVAsset.FromUrl(NSUrl.FromString(SelectedVote.VideoUrl)); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _playerLayer.Frame = View.Frame; descView.Layer.AddSublayer(_playerLayer); _player.Play(); } } }
protected override void OnElementChanged(ElementChangedEventArgs <VideoView> e) { if (e.NewElement != null) { if (string.IsNullOrEmpty(Element.Source)) { throw new ArgumentException("Source is required."); } if (base.Control == null) { var view = new UIView(); SetNativeControl(view); if (Element.ShowControl) { if (Element.IsFromUrl) { if (movieController == null) { var url = NSUrl.FromString(Element.Source); movieController = new MPMoviePlayerController(); movieController.ShouldAutoplay = true; movieController.Fullscreen = true; movieController.ControlStyle = MPMovieControlStyle.Embedded; movieController.PrepareToPlay(); movieController.SourceType = MPMovieSourceType.Streaming; movieController.ContentUrl = url; view.Add(movieController.View); movieController.Play(); movieController.SetFullscreen(true, true); } } } else { if (playerItem == null) { asset = AVAsset.FromUrl(NSUrl.FromFilename(Element.Source)); playerItem = new AVPlayerItem(asset); // AVPlayerItem.DidPlayToEndTimeNotification; player = new AVPlayer(playerItem); player.ActionAtItemEnd = AVPlayerActionAtItemEnd.None; playerLayer = AVPlayerLayer.FromPlayer(player); view.Layer.AddSublayer(playerLayer); SetRepeat(); SetPlaying(); } } } } base.OnElementChanged(e); }
public override void ViewDidLoad() { base.ViewDidLoad(); //largely taken from the xamarin website videoplayer tutorial //build the path to the location where the movie was saved var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var library = System.IO.Path.Combine(documents, "..", "Library"); var urlpath = System.IO.Path.Combine(library, "sweetMovieFilm.mov"); NSUrl url = new NSUrl(urlpath, false); _asset = AVAsset.FromUrl(url); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _playerLayer.Frame = View.Frame; View.Layer.AddSublayer(_playerLayer); //this code makes UI controls sit on top of the movie layer. Allows you to just place the controls in interface builder UIView cameraView = new UIView(); this.View.AddSubview(cameraView); this.View.SendSubviewToBack(cameraView); cameraView.Layer.AddSublayer(_playerLayer); _player.Play(); this.btnDonePlaying.TouchUpInside += stopPlaying; }
private void InitializePlayer() { _player = new AVPlayer(); _videoLayer = AVPlayerLayer.FromPlayer(_player); var avSession = AVAudioSession.SharedInstance(); // By setting the Audio Session category to AVAudioSessionCategorPlayback, audio will continue to play when the silent switch is enabled, or when the screen is locked. avSession.SetCategory(AVAudioSessionCategory.Playback); NSError activationError = null; avSession.SetActive(true, out activationError); if (activationError != null) { Console.WriteLine("Could not activate audio session {0}", activationError.LocalizedDescription); } Player.AddPeriodicTimeObserver(new CMTime(1, 4), DispatchQueue.MainQueue, delegate { var totalDuration = TimeSpan.FromSeconds(_player.CurrentItem.Duration.Seconds); var totalProgress = Position.TotalMilliseconds / totalDuration.TotalMilliseconds; PlayingChanged?.Invoke(this, new PlayingChangedEventArgs(totalProgress, Position, Duration)); }); }
public AVMediaPlayer() { player = new AVPlayer { ActionAtItemEnd = AVPlayerActionAtItemEnd.Pause, #if __IOS__ AllowsAirPlayVideo = true, #endif AllowsExternalPlayback = true, Volume = Settings.CurrentVolume, }; resourceDelegate = new MyResourceLoaderDelegate(this); timeObserver = player.AddPeriodicTimeObserver(new CoreMedia.CMTime(5, 30), null, (time) => OnPlabackTimeChanged(player, time)); rateObserver = player.AddObserver("rate", NSKeyValueObservingOptions.New, (change) => OnStateChanged(player)); PlayerLayer = AVPlayerLayer.FromPlayer(player); endTimeObserver = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, (notification) => { var avplayerItem = notification?.Object as AVPlayerItem; if (avplayerItem == player.CurrentItem) { OnFinished(avplayerItem); } }); playerDidStallObserver = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.PlaybackStalledNotification, (notification) => { var avplayerItem = notification?.Object as AVPlayerItem; if (avplayerItem == player.CurrentItem) { Console.WriteLine("Handle STalling"); isStalled = true; State = PlaybackState.Buffering; } }); }
public override void ViewDidLoad() { base.ViewDidLoad(); _asset = AVAsset.FromUrl(NSUrl.FromFilename("SampleVideo.mp4")); _playerItem = new AVPlayerItem(_asset); _playerItem.SeekingWaitsForVideoCompositionRendering = true; _playerItem.AddObserver(this, (NSString)"status", NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, StatusObservationContext.Handle); NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, (notification) => { Console.WriteLine("Seek Zero = true"); seekToZeroBeforePlaying = true; this.updatePlayPauseButton(); }, _playerItem); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _playerLayer.Frame = this.playerView.Frame; this.playerView.Layer.AddSublayer(_playerLayer); updateScrubber(); updateTimeLabel(); slider.EditingDidBegin += slider_EditingDidBegin; slider.EditingDidEnd += slider_EditingDidEnd; slider.ValueChanged += slider_ValueChanged; playpauseButton.TouchUpInside += playpauseButton_TouchUpInside; playing = true; _player.Play(); }
protected override void OnElementChanged(ElementChangedEventArgs <View> e) { base.OnElementChanged(e); //Get the video //bubble up to the AVPlayerLayer //var url = new NSUrl ("http://www.androidbegin.com/tutorial/AndroidCommercial.3gp"); var url = new NSUrl("file://" + NSBundle.MainBundle.PathForResource("SampleVideo", "mp4")); _asset = AVAsset.FromUrl(url); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); //Create the play button playButton = new UIButton(); playButton.SetTitle("Play Video", UIControlState.Normal); playButton.BackgroundColor = UIColor.Gray; //Set the trigger on the play button to play the video playButton.TouchUpInside += (object sender, EventArgs arg) => { _player.Play(); }; }
public override void ViewDidLoad() { base.ViewDidLoad(); if (string.IsNullOrEmpty(FilePath) || !File.Exists(FilePath)) { NavigationController.PopViewController(true); } string taskType = Task.TaskType.IdName; if (taskType == "LISTEN_AUDIO" || taskType == "REC_AUDIO" || taskType == "TAKE_VIDEO") { // Load video, play and loop playerItem = AVPlayerItem.FromUrl(NSUrl.FromFilename(FilePath)); player = AVQueuePlayer.FromItems(new AVPlayerItem[] { playerItem }); playerLayer = AVPlayerLayer.FromPlayer(player); playerLooper = AVPlayerLooper.FromPlayer(player, playerItem); if (taskType == "TAKE_VIDEO") { playerLayer.Frame = View.Frame; View.Layer.AddSublayer(playerLayer); } else { ImageView.Hidden = true; AudioIcon.Hidden = false; DescLabel.Text = Task.Description; } player.Play(); } else { // Load image ImageService.Instance.LoadFile(FilePath).Error((e) => { Console.WriteLine("ERROR LOADING IMAGE: " + e.Message); NavigationController.PopViewController(true); }).Into(ImageView); } if (DeleteResult != null) { UIBarButtonItem customButton = new UIBarButtonItem( UIImage.FromFile("ic_delete"), UIBarButtonItemStyle.Plain, (s, e) => { ConfirmDelete(); } ); NavigationItem.RightBarButtonItem = customButton; } }
void ResetPlayer2() { StopPlayer(player2); player2Song = null; player2?.CurrentItem?.Asset?.CancelLoading(); ResetPlayer(player2); player2 = CreatePlayer(); player2Layer = AVPlayerLayer.FromPlayer(player2); }
void ResetPlayer1() { StopPlayer(player1); player1Song = null; player1?.CurrentItem?.Asset?.CancelLoading(); ResetPlayer(player1); player1 = CreatePlayer(); player1Layer = AVPlayerLayer.FromPlayer(player1); }
private void BtnPlay_TouchUpInside(object sender, EventArgs e) { avAsset = AVAsset.FromUrl(NSUrl.FromFilename("video.mp4")); avPlayerItem = new AVPlayerItem(avAsset); avPlayer = new AVPlayer(avPlayerItem); avPlayerLayer = AVPlayerLayer.FromPlayer(avPlayer); avPlayerLayer.Frame = View.Frame; View.Layer.AddSublayer(avPlayerLayer); avPlayer.Play(); }
protected override void OnElementChanged(ElementChangedEventArgs <View> e) { base.OnElementChanged(e); if (e.NewElement is VideoPlayer parentPlayer) { _player = new AVPlayer(); _playerLayer = AVPlayerLayer.FromPlayer(_player); _contentType = parentPlayer.ContentType; var url = _contentType == Constants.ContentType.Remote ? new NSUrl(parentPlayer.Source) : new NSUrl(parentPlayer.Source, false); _asset = AVAsset.FromUrl(url); _playerItem = new AVPlayerItem(_asset); _player.ReplaceCurrentItemWithPlayerItem(_playerItem); videoLengthThread = new Thread(new ThreadStart(() => { _totalLength = _player.CurrentItem.Asset.Duration.Seconds; InvokeOnMainThread(() => { parentPlayer.SoundLength?.Invoke(this, _totalLength); }); })); videoLengthThread.Start(); parentPlayer.Play += (sender, innere) => { if (videoLengthThread.IsAlive) { videoLengthThread.Abort(); _totalLength = _player.CurrentItem.Asset.Duration.Seconds; parentPlayer.SoundLength?.Invoke(this, _totalLength); } StartTimeObserver(parentPlayer); _player.Play(); }; parentPlayer.Pause += (sender, innere) => { _player.Pause(); }; parentPlayer.Stop += (sender, innere) => { EndTimeObserver(); _player.Stop(); }; parentPlayer.GoToTime += (sender, sec) => { _player.SeekAsync(CoreMedia.CMTime.FromSeconds(sec, Constants.NSEC_PER_SEC)); }; } }
public void SetVideoSurface(IVideoSurface videoSurface) { var view = ((VideoSurface)videoSurface); if (view == null) { throw new ArgumentException("VideoSurface must be a UIView"); } RenderSurface = videoSurface; _videoLayer = AVPlayerLayer.FromPlayer(Player); view.Layer.AddSublayer(_videoLayer); _videoLayer.Frame = view.Frame; SetAspectMode(VideoAspectMode.AspectFit); }
public void SetVideoSurface(IVideoSurface videoSurface) { var view = (VideoSurface)videoSurface; if (view == null) { throw new ArgumentException("VideoSurface must be a UIView"); } RenderSurface = videoSurface; _videoLayer = AVPlayerLayer.FromPlayer(Player); _videoLayer.Frame = view.Frame; _videoLayer.VideoGravity = AVLayerVideoGravity.ResizeAspect; view.Layer.AddSublayer(_videoLayer); }
public static void SetPlayerView(this IMediaPlayer mediaPlayer, VideoSurface videoView) { if (mediaPlayer is IVideoPlayer <AVPlayer, VideoSurface> videoPlayer) { var layer = AVPlayerLayer.FromPlayer(videoPlayer.Player); layer.Frame = videoView.Frame; layer.VideoGravity = AVLayerVideoGravity.ResizeAspect; videoView.Layer.AddSublayer(layer); videoPlayer.PlayerView = videoView; } else { throw new ArgumentException("MediaPlayer needs to be of type IMediaPlayer<SimpleExoPlayer> to use this extension", nameof(mediaPlayer)); } }
public override void ViewDidLoad() { base.ViewDidLoad(); asset = AVAsset.FromUrl(NSUrl.FromFilename("sample.m4v")); playerItem = new AVPlayerItem(asset); player = new AVPlayer(playerItem); playerLayer = AVPlayerLayer.FromPlayer(player); playerLayer.Frame = View.Frame; View.Layer.AddSublayer(playerLayer); player.Play(); }
protected override void OnElementChanged(ElementChangedEventArgs <View> e) { base.OnElementChanged(e); _asset = AVAsset.FromUrl(NSUrl.FromFilename("intro.mp4")); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _player.ActionAtItemEnd = AVPlayerActionAtItemEnd.None; _playerLayer = AVPlayerLayer.FromPlayer(_player); videoEndNotificationToken = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, VideoDidFinishPlaying, _playerItem); _player.Play(); }
public static AVPlayer ShowVideo(this UIView view, string pathVideo) { var asset = AVAsset.FromUrl(NSUrl.FromFilename(pathVideo)); var playerItem = new AVPlayerItem(asset); var player = new AVPlayer(playerItem); var playerLayer = AVPlayerLayer.FromPlayer(player); playerLayer.Frame = view.Frame; view.Layer.AddSublayer(playerLayer); player.Play(); return(player); }
public override void ViewDidLoad() { base.ViewDidLoad(); // Perform any additional setup after loading the view, typically from a nib. _asset = AVAsset.FromUrl(NSUrl.FromFilename("sample.m4v")); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _playerLayer.Frame = new RectangleF(25, 15, 320 - 15, 240 - 15); View.Layer.AddSublayer(_playerLayer); _player.Play(); }
public MyPlayerView(bool noController, RectangleF frame) { this.Frame = frame; if (noController) { var asset = AVAsset.FromUrl(NSUrl.FromFilename("sample.m4v")); var playerItem = new AVPlayerItem(asset); this._MyAvPlayer = new AVPlayer(playerItem); var playerLayer = AVPlayerLayer.FromPlayer(this._MyAvPlayer); playerLayer.Frame = this.Frame; _MyAvPlayer.Play(); this.Layer.AddSublayer(playerLayer); } }
protected override void OnElementChanged(ElementChangedEventArgs <View> e) { base.OnElementChanged(e); //Get the video //bubble up to the AVPlayerLayer //var url = new NSUrl ("http://www.androidbegin.com/tutorial/AndroidCommercial.3gp"); _asset = AVAsset.FromUrl(NSUrl.FromFilename("explore.mp4")); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _player.ActionAtItemEnd = AVPlayerActionAtItemEnd.None; _playerLayer = AVPlayerLayer.FromPlayer(_player); videoEndNotificationToken = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, VideoDidFinishPlaying, _playerItem); _player.Play(); }
bool IVideoPlayer.LoadScreen(Xamarin.Forms.View view, float screenWidth, string uri) { var Uiview = (view as NativeViewWrapper).NativeView; avasset = AVAsset.FromUrl(NSUrl.FromString(uri)); avplayerItem = new AVPlayerItem(avasset); avplayer = new AVPlayer(avplayerItem); _playerViewController = new AVPlayerViewController { Player = avplayer }; avplayerLayer = AVPlayerLayer.FromPlayer(_playerViewController.Player); Uiview.Layer.AddSublayer(avplayerLayer); avplayerLayer.Frame = new CoreGraphics.CGRect(0, 0, screenWidth, 260); _playerViewController.ShowsPlaybackControls = true; _playerViewController.Player.Play(); IsPlaying = true; return(true); }
private void SetupVideoPlayer() { VideoPlayerContainerView.Alpha = 1; VideoPlayerContainerView.Frame = View.Frame; _currentVideoAsset = AVAsset.FromUrl(NSUrl.FromFilename("ElectricGuitarPlay.mp4")); _currentVideoPlayerItem = new AVPlayerItem(_currentVideoAsset); _player = new AVPlayer(_currentVideoPlayerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _playerLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill; _playerLayer.Frame = this.View.Frame; VideoPlayerContainerView.Layer.AddSublayer(_playerLayer); _videoEndedNotificationToken = NSNotificationCenter.DefaultCenter.AddObserver((NSString)"AVPlayerItemDidPlayToEndTimeNotification", RevindVideo, _currentVideoPlayerItem); _player.ActionAtItemEnd = AVPlayerActionAtItemEnd.None; _player.Muted = true; }
private void InitializePlayer() { _player = new AVPlayer(); _videoLayer = AVPlayerLayer.FromPlayer(_player); NSError activationError = null; if (activationError != null) { Console.WriteLine("Could not activate audio session {0}", activationError.LocalizedDescription); } Player.AddPeriodicTimeObserver(new CMTime(1, 4), DispatchQueue.MainQueue, delegate { var totalDuration = TimeSpan.FromSeconds(_player.CurrentItem.Duration.Seconds); var totalProgress = Position.TotalMilliseconds / totalDuration.TotalMilliseconds; PlayingChanged?.Invoke(this, new PlayingChangedEventArgs(totalProgress, Position, Duration)); }); }
public AudioFadePlayer() { player1 = CreatePlayer(); player1Layer = AVPlayerLayer.FromPlayer(player1); player2 = CreatePlayer(); player2Layer = AVPlayerLayer.FromPlayer(player2); endTimeObserver = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, (notification) => { var avplayerItem = notification.Object as AVPlayerItem; PlayerFinished(avplayerItem); }); NotificationManager.Shared.VolumeChanged += (s, e) => { CurrentPlayer.Volume = Settings.CurrentVolume; }; NotificationManager.Shared.EqualizerChanged += (s, e) => { AVPlayerEqualizer.Shared.ApplyEqualizer(CurrentItem); }; }
partial void PlayButtonClickHandler(NSObject sender) { if (LivePhotoView.LivePhoto != null) { // We're displaying a live photo, begin playing it. LivePhotoView.StartPlayback(PHLivePhotoViewPlaybackStyle.Full); } else if (playerLayer != null) { // An AVPlayerLayer has already been created for this asset. playerLayer.Player.Play(); } else { // Request an AVAsset for the PHAsset we're displaying. PHImageManager.DefaultManager.RequestAvAsset(Asset, null, (asset, audioMix, info) => DispatchQueue.MainQueue.DispatchAsync(() => { if (playerLayer == null) { CALayer viewLayer = View.Layer; // Create an AVPlayerItem for the AVAsset. var playerItem = new AVPlayerItem(asset); playerItem.AudioMix = audioMix; // Create an AVPlayer with the AVPlayerItem. var player = new AVPlayer(playerItem); // Create an AVPlayerLayer with the AVPlayer. playerLayer = AVPlayerLayer.FromPlayer(player); // Configure the AVPlayerLayer and add it to the view. playerLayer.VideoGravity = AVLayerVideoGravity.ResizeAspect; playerLayer.Frame = new CGRect(0, 0, viewLayer.Bounds.Width, viewLayer.Bounds.Height); viewLayer.AddSublayer(playerLayer); playerLayer.Player.Play(); } })); } }
private void InitializePlayer() { _player = new AVQueuePlayer(); _videoLayer = AVPlayerLayer.FromPlayer(_player); _videoLayer.Frame = ((VideoSurface)RenderSurface).Frame; _videoLayer.VideoGravity = AVLayerVideoGravity.ResizeAspect; ((VideoSurface)RenderSurface).Layer.AddSublayer(_videoLayer); var avSession = AVAudioSession.SharedInstance(); avSession.SetCategory(AVAudioSessionCategory.Playback); NSError activationError = null; avSession.SetActive(true, out activationError); if (activationError != null) { this.Log().WarnIfEnabled(() => $"Could not activate audio session: {activationError.LocalizedDescription}"); } _videoLayer.AddObserver(this, new NSString("videoRect"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, _videoLayer.Handle); _player.AddObserver(this, new NSString("rate"), NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, RateObservationContext.Handle); _itemFailedToPlayToEndTimeNotification = AVPlayerItem.Notifications.ObserveItemFailedToPlayToEndTime((sender, args) => OnMediaFailed(new Exception(args.Error.LocalizedDescription))); _playbackStalledNotification = AVPlayerItem.Notifications.ObservePlaybackStalled((sender, args) => OnMediaFailed()); _didPlayToEndTimeNotification = AVPlayerItem.Notifications.ObserveDidPlayToEndTime((sender, args) => OnMediaEnded(sender, args)); _periodicTimeObserverObject = _player.AddPeriodicTimeObserver(new CMTime(1, 4), DispatchQueue.MainQueue, delegate { if (_player?.CurrentItem == null) { return; } if (PlaybackSession.PlaybackState == MediaPlaybackState.Playing) { PlaybackSession.PositionFromPlayer = Position; } }); }
public void Open(string videoFileName) { _playerLoaded = false; if (_player != null) { try { _player.Pause(); _player.Dispose(); _player = null; foreach (var subView in View.VideoView.Subviews) { subView.RemoveFromSuperview(); } foreach (var subLayer in View.VideoView.Layer.Sublayers) { subLayer.RemoveFromSuperLayer(); } _playerLayer.Dispose(); _playerItem.Dispose(); _asset.Dispose(); } catch { } } ShowPlayImage(false); _asset = AVAsset.FromUrl(NSUrl.FromFilename(videoFileName)); _playerItem = new AVPlayerItem(_asset); _player = new AVPlayer(_playerItem); _playerLayer = AVPlayerLayer.FromPlayer(_player); _videoView = new NSMyVideoView(new CoreGraphics.CGRect(0, 0, View.VideoView.Frame.Width, View.VideoView.Frame.Width), View.VideoView, _playerLayer); _videoView.WantsLayer = true; View.VideoView.AddSubview(_videoView); View.VideoView.WantsLayer = true; _playerLayer.Frame = View.VideoView.Bounds; View.VideoView.Layer.AddSublayer(_playerLayer); _videoView.ResizeWithCorrectAspectRatio(); _playerLoaded = true; }