Beispiel #1
0
 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();
                }
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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));
            });
        }
Beispiel #7
0
        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();
        }
Beispiel #9
0
        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();
            };
        }
Beispiel #10
0
        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;
            }
        }
Beispiel #11
0
 void ResetPlayer2()
 {
     StopPlayer(player2);
     player2Song = null;
     player2?.CurrentItem?.Asset?.CancelLoading();
     ResetPlayer(player2);
     player2      = CreatePlayer();
     player2Layer = AVPlayerLayer.FromPlayer(player2);
 }
Beispiel #12
0
 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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
 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();
        }
Beispiel #19
0
        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();
        }
Beispiel #22
0
        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);
            }
        }
Beispiel #23
0
        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);
        }
Beispiel #25
0
        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));
            });
        }
Beispiel #27
0
        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();
                    }
                }));
            }
        }
Beispiel #29
0
        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;
                }
            });
        }
Beispiel #30
0
 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;
 }