Exemplo n.º 1
0
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayer> args)
        {
            base.OnElementChanged(args);

            if (args.NewElement != null)
            {
                if (Control == null)
                {
                    player = new AVPlayer();
                    _playerViewController = new AVPlayerViewController
                    {
                        Player = player,
                        ShowsPlaybackControls = false
                    };
                    SetNativeControl(_playerViewController.View);
                }

                UpdateBackground();
                UpdateSource();
                UpdatePlayback();

                args.NewElement.ResetToStartRequested += OnResetToStartRequested;
            }

            if (args.OldElement != null)
            {
                args.OldElement.ResetToStartRequested -= OnResetToStartRequested;
            }
        }
Exemplo n.º 2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            View.BackgroundColor = UIColor.White;

            var player = new AVPlayer(NSUrl.FromString(Screens[Index].VideoUrl));
            var playerViewController = new AVPlayerViewController
            {
                Player = player,
            };

            AddChildViewController(playerViewController);
            View.AddSubview(playerViewController.View);

            #region Layout

            View.ConstrainLayout(() =>
                                 playerViewController.View.Frame.GetCenterY() == View.Frame.GetCenterY() &&
                                 playerViewController.View.Frame.Left == View.Frame.Left &&
                                 playerViewController.View.Frame.Right == View.Frame.Right
//                playerViewController.View.Frame.Height >= 240f
                                 );
            #endregion
        }
Exemplo n.º 3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _closeButton = new UIBarButtonItem(Translation.general_close, UIBarButtonItemStyle.Plain, null);
            NavigationItem.LeftBarButtonItem = _closeButton;

            _avplayer                  = new AVQueuePlayer();
            _avplayerController        = new AVPlayerViewController();
            _avplayerController.Player = _avplayer;

            AddChildViewController(_avplayerController);
            View.AddSubview(_avplayerController.View);

            _avplayerController.View.Transform = CoreGraphics.CGAffineTransform.MakeRotation((nfloat)1.5708);
            ImageView.Transform = CoreGraphics.CGAffineTransform.MakeRotation((nfloat)1.5708);
            ImageView.Frame     = View.Frame;

            _avplayerController.View.Frame            = View.Frame;
            _avplayerController.ShowsPlaybackControls = false;

            // Bring spinner back to front
            View.BringSubviewToFront(LoadingSpinner);

            var set = this.CreateBindingSet <DisplayView, DisplayViewModel>();

            set.Bind(this).For(v => v.MediaUrl).To(vm => vm.MediaUrl);
            set.Bind(_closeButton).To(vm => vm.CloseCommand);
            set.Apply();
        }
Exemplo n.º 4
0
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayer> args)
        {
            base.OnElementChanged(args);

            if (args.NewElement != null)
            {
                if (Control == null)
                {
                    _playerViewController = new AVPlayerViewController();

                    player = new AVPlayer();
                    _playerViewController.Player = player;

                    var x = _playerViewController.View;
                    SetNativeControl(_playerViewController.View);
                }

                SetAreTransportControlsEnabled();
                SetSource();

                args.NewElement.UpdateStatus   += OnUpdateStatus;
                args.NewElement.PlayRequested  += OnPlayRequested;
                args.NewElement.PauseRequested += OnPauseRequested;
                args.NewElement.StopRequested  += OnStopRequested;
            }

            if (args.OldElement != null)
            {
                args.OldElement.UpdateStatus   -= OnUpdateStatus;
                args.OldElement.PlayRequested  -= OnPlayRequested;
                args.OldElement.PauseRequested -= OnPauseRequested;
                args.OldElement.StopRequested  -= OnStopRequested;
            }
        }
Exemplo n.º 5
0
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayer> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                if (Control == null)
                {
                    _playerViewController = new AVPlayerViewController()
                    {
                        ShowsPlaybackControls = true
                    };

                    _player = new AVPlayer();
                    _playerViewController.Player = _player;

                    SetNativeControl(_playerViewController.View);
                }

                if (e.NewElement.Source is VideoPlayer.FileSource fileSource)
                {
                    _playerItem = new AVPlayerItem(new NSUrl(fileSource.Path));
                }
                else if (e.NewElement.Source is VideoPlayer.UrlSource urlSource)
                {
                    _playerItem = new AVPlayerItem(new NSUrl(urlSource.Url));
                }

                _player.ReplaceCurrentItemWithPlayerItem(_playerItem);
            }

            if (e.OldElement != null)
            {
            }
        }
Exemplo n.º 6
0
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            base.PrepareForSegue(segue, sender);

            if (segue.Identifier == AssetListTableViewController.PresentPlayerViewControllerSegueID ||
                sender is AssetListTableViewCell)
            {
                var cell = sender as AssetListTableViewCell;
                var destinationViewController = segue.DestinationViewController as AVPlayerViewController;
                var asset = cell.Asset;

                if (destinationViewController == null || asset == null)
                {
                    return;
                }

                playerViewController = destinationViewController;

                if (AssetPersistenceManager.Current.GetDownloadState(asset) == AssetDownloadState.Downloaded)
                {
                    if (!asset.UrlAsset.ResourceLoader.PreloadsEligibleContentKeys)
                    {
                        asset.UrlAsset.ResourceLoader.PreloadsEligibleContentKeys = true;
                    }
                }

                AssetPlaybackManager.Current.SetAssetForPlayback(asset);
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayerView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                if (Control == null)
                {
                    // Create AVPlayerViewController
                    _playerViewController = new AVPlayerViewController
                    {
                        //ExitsFullScreenWhenPlaybackEnds = true
                    };
                    // Set Player property to AVPlayer
                    _player = new AVPlayer(new NSUrl(Element.Source));
                    _playerViewController.Player = _player;

                    // Use the View from the controller as the native control
                    SetNativeControl(_playerViewController.View);
                }

                _videoPlayer = e.NewElement;
            }

            if (e.OldElement != null)
            {
            }
        }
Exemplo n.º 8
0
        void SetUpContentPlayer()
        {
            var      contentURL = new Foundation.NSUrl(contentUrlString);
            AVPlayer player     = new AVPlayer(contentURL);

            aVPlayerViewController        = new AVPlayerViewController();
            aVPlayerViewController.Player = player;

            // Set up your content playhead and contentComplete callback.

            contentPlayhead = new IMAAVPlayerContentPlayhead(player);
            NSNotificationCenter.DefaultCenter.AddObserver(new NSString("AVPlayerItemDidPlayToEndTime"), ContentDidFinishPlaying);

            //NSNotificationCenter.DefaultCenter.AddObserver(this
            //    , new ObjCRuntime.Selector("ViewController.contentDidFinishPlaying(_:)")
            //    , new NSString("AVPlayerItemDidPlayToEndTime")
            //    , player.CurrentItem) ;



            //        contentPlayhead = IMAAVPlayerContentPlayhead(avPlayer: player)
            //NotificationCenter.default.addObserver(
            //  self,
            //  selector: #selector(ViewController.contentDidFinishPlaying(_:)),
            //  name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
            //  object: player.currentItem);


            ShowContentPlayer();
        }
Exemplo n.º 9
0
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayer> args)
        {
            base.OnElementChanged(args);

            if (args.NewElement != null)
            {
                if (Control == null)
                {
                    // Create AVPlayerViewController
                    _playerViewController = new AVPlayerViewController();

                    // Set Player property to AVPlayer
                    player = new AVPlayer();
                    _playerViewController.Player = player;

                    // Use the View from the controller as the native control
                    SetNativeControl(_playerViewController.View);
                }

                SetSource();
                args.NewElement.UpdateStatus   += OnUpdateStatus;
                args.NewElement.PlayRequested  += OnPlayRequested;
                args.NewElement.PauseRequested += OnPauseRequested;
                args.NewElement.StopRequested  += OnStopRequested;
            }

            if (args.OldElement != null)
            {
                args.OldElement.UpdateStatus   -= OnUpdateStatus;
                args.OldElement.PlayRequested  -= OnPlayRequested;
                args.OldElement.PauseRequested -= OnPauseRequested;
                args.OldElement.StopRequested  -= OnStopRequested;
            }
        }
Exemplo n.º 10
0
        private static void ProcessSubtitle(
            this AVPlayerViewController controller,
            CMTime time)
        {
            NSString text = NSString.Empty;

            NSArray payload = controller.Payload();

            for (nuint i = 0; i < payload.Count; ++i)
            {
                NSDictionary item = payload.GetItem <NSDictionary>(i);
                NSNumber     from = item.ObjectForKey(new NSString("from")) as NSNumber;
                NSNumber     to   = item.ObjectForKey(new NSString("to")) as NSNumber;
                if (time.Seconds >= from.FloatValue &&
                    time.Seconds < to.FloatValue)
                {
                    text = item.ObjectForKey(new NSString("text")) as NSString;
                    break;
                }
            }

            UILabel subtitleLabel = controller.SubtitleLabel();

            subtitleLabel.Text = text;
            var attributes = new UIStringAttributes();

            attributes.Font = subtitleLabel.Font;
            CGRect rect = text.GetBoundingRect(
                new CGSize(subtitleLabel.Bounds.Width, nfloat.MaxValue),
                NSStringDrawingOptions.UsesLineFragmentOrigin,
                attributes, null
                );

            controller.SubtitleConstranint().Constant = rect.Size.Height + 5;
        }
        /// <summary>
        /// Raises the <see cref="E:ElementChanged" /> event.
        /// </summary>
        /// <param name="e">The <see cref="ElementChangedEventArgs{VideoPlayer}"/> instance containing the event data.</param>
        protected override async void OnElementChanged(ElementChangedEventArgs <VideoPlayer> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                // Controller Setup
                _playerControl = new AVPlayerViewController
                {
                    View =
                    {
                        Bounds           = Bounds,
                        AutoresizingMask = AutoresizingMask
                    },
                    Player = new AVPlayer()
                };

                SetNativeControl(_playerControl.View);
            }

            if (e.NewElement != null)
            {
                // Player Setup
                UpdateDisplayControls();
                UpdateVolume();
                UpdateFillMode();
                UpdateTimeElapsedInterval();
                UpdateVisibility();
                RegisterEvents();
                await UpdateSource(e.OldElement);

                Element.NativeRenderer = this;
            }
        }
Exemplo n.º 12
0
        private void SetupUserInterface()
        {
            var playerUrl = new NSUrl((Element as ViewPlayerPage).Url);

            playerView = new AVPlayerViewController();
            var playerItem = new AVPlayerItem(playerUrl);

            player = new AVPlayer(playerItem);

            //var layer = new AVPlayerLayer();
            ////给AVPlayer一个播放的layer层
            //layer.Player = player;
            //layer.Frame = new CoreGraphics.CGRect(0, 100, View.Frame.Size.Width, 600);
            //layer.BackgroundColor = UIColor.Gray.CGColor;
            ////设置AVPlayer的填充模式
            //layer.VideoGravity = AVLayerVideoGravity.Resize;
            //View.Layer.AddSublayer(layer);
            //player.Play();

            playerView.View.Frame            = new CoreGraphics.CGRect(0, (View.Frame.Size.Height - 320) / 2, View.Frame.Size.Width, 320);
            playerView.ShowsPlaybackControls = true;
            playerView.Player = player;
            playerView.View.TranslatesAutoresizingMaskIntoConstraints = true;
            View.AddSubview(playerView.View);
            ViewController.PresentViewController(playerView, true, null);
            player.Play();
        }
Exemplo n.º 13
0
        private async Task SetSource(AtomVideoSource source)
        {
            try
            {
                asset = await LoadAsset(source);

                playerItem = new AVPlayerItem(asset);
                player     = new AVPlayer(playerItem);

                playerController = new AVPlayerViewController();
                Control.AddSubview(playerController.View);
                playerController.Player     = player;
                playerController.View.Frame = Control.Frame;

                player.Seek(CMTime.FromSeconds(1, 1000));

                if (Element.IsPlaying)
                {
                    player.Play();
                }
            }
            catch (Exception ex) {
                AtomDevice.Instance.Log(ex);
            }
        }
Exemplo n.º 14
0
        public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.CellAt(indexPath) as ContentMusicTvCell;

            tableView.DeselectRow(indexPath, true);


            var asset = saved ? savedAssets [indexPath.Row] : allAssets [indexPath.Row];

            if (asset != null)
            {
                if (asset.Music.ContentType == AvContentTypes.Video)
                {
                    playerViewController = new AVPlayerViewController();

                    PresentViewController(playerViewController, true, null);
                }

                BeginInvokeOnMainThread(() =>
                {
                    var playing = AssetPlaybackManager.Shared.TogglePlayback(asset);

                    if (indexPathCache != null && indexPathCache != indexPath)
                    {
                        if (tableView.IndexPathsForVisibleRows.Contains(indexPathCache))
                        {
                            var oldCell = tableView.CellAt(indexPathCache) as ContentMusicTvCell;

                            oldCell?.SetPlaying(false);
                        }
                    }

                    indexPathCache = indexPath;

                    if (asset.Music.ContentType == AvContentTypes.Audio)
                    {
                        if (NavigationController.ToolbarHidden)
                        {
                            NavigationController.SetToolbarHidden(false, true);
                        }

                        cell?.SetPlaying(playing);

                        var items = ToolbarItems;

                        items [0] = playing ? pauseButton : playButton;

                        //items [2].Title = asset.Music.DisplayName;
                        titleButton.Title = asset.Music.DisplayName;

                        SetToolbarItems(items, true);
                    }
                    else if (!NavigationController.ToolbarHidden)
                    {
                        NavigationController.SetToolbarHidden(true, false);
                    }
                });
            }
        }
Exemplo n.º 15
0
 private static NSArray Payload(
     this AVPlayerViewController controller)
 {
     return(GetProperty <NSArray>(
                controller,
                SubtitleKeys.Payload
                ));
 }
Exemplo n.º 16
0
 public static UILabel SubtitleLabel(
     this AVPlayerViewController controller)
 {
     return(GetProperty <UILabel>(
                controller,
                SubtitleKeys.Label
                ));
 }
 public AVPlayerViewController PlayerController()
 {
     if (_player == null)
     {
         _player = new AVPlayerViewController();
     }
     return(_player);
 }
Exemplo n.º 18
0
 private static NSLayoutConstraint SubtitleConstranint(
     this AVPlayerViewController controller)
 {
     return(GetProperty <NSLayoutConstraint>(
                controller,
                SubtitleKeys.Height
                ));
 }
Exemplo n.º 19
0
        void InitVideoPlayer()
        {
            var path = Path.Combine(NSBundle.MainBundle.BundlePath, Element.Source);

            if (!NSFileManager.DefaultManager.FileExists(path))
            {
                Console.WriteLine("Video not exist");
                _videoPlayer = new AVPlayerViewController();
                _videoPlayer.ShowsPlaybackControls = false;
                _videoPlayer.Player.Volume         = 0;
                _videoPlayer.VideoGravity          = AVLayerVideoGravity.ResizeAspectFill;


                _videoPlayer.View.BackgroundColor = UIColor.Clear;
                SetNativeControl(_videoPlayer.View);
                return;
            }

            _queuePlayer = new AVQueuePlayer();

            // Load the video from the app bundle.
            NSUrl videoUrl = new NSUrl(path, false);


            // Create and configure the movie player.
            _videoPlayer = new AVPlayerViewController
            {
                View =
                {
                    Bounds           = Bounds,
                    AutoresizingMask = AutoresizingMask
                },
                Player = (Element.Loop)?_queuePlayer: new AVPlayer(videoUrl)
            };
            var playerItem = new AVPlayerItem(videoUrl);

            _videoPlayer.ShowsPlaybackControls = false;
            _videoPlayer.Player.Volume         = 0;
            _videoPlayer.VideoGravity          = AVLayerVideoGravity.ResizeAspectFill;
            _looper = new AVPlayerLooper(_queuePlayer, playerItem, CoreMedia.CMTimeRange.InvalidRange);

            _videoPlayer.View.BackgroundColor = UIColor.Clear;
            foreach (UIView subView in _videoPlayer.View.Subviews)
            {
                subView.BackgroundColor = UIColor.Clear;
            }

            if (Element.Loop)
            {
                _queuePlayer.Play();
            }
            else
            {
                _videoPlayer.Player.Play();
            }

            SetNativeControl(_videoPlayer.View);
        }
        public void PreparePrerollAds_New()
        {
            if (!UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                Assert.Inconclusive("Requires 8.0+");
            }

            AVPlayerViewController.PrepareForPrerollAds();
        }
Exemplo n.º 21
0
        private static T GetProperty <T>(
            this AVPlayerViewController controller,
            NSString propertyKey) where T : NSObject
        {
            var pointer = objc_getAssociatedObject(
                controller.Handle,
                propertyKey.Handle
                );

            return(Runtime.GetNSObject <T>(pointer));
        }
Exemplo n.º 22
0
 public static void SetSubtitleLabel(
     this AVPlayerViewController controller,
     UILabel label)
 {
     SetProperty <UILabel>(
         controller,
         SubtitleKeys.Label,
         label,
         AssociationPolicy.RetainNonAtomic
         );
 }
Exemplo n.º 23
0
 private static void SetPayload(
     this AVPlayerViewController controller,
     NSArray payload)
 {
     SetProperty <NSArray>(
         controller,
         SubtitleKeys.Payload,
         payload,
         AssociationPolicy.RetainNonAtomic
         );
 }
Exemplo n.º 24
0
 private static void SetSubtitleConstraint(
     this AVPlayerViewController controller,
     NSLayoutConstraint constraint)
 {
     SetProperty <NSLayoutConstraint>(
         controller,
         SubtitleKeys.Height,
         constraint,
         AssociationPolicy.RetainNonAtomic
         );
 }
Exemplo n.º 25
0
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);

            if (playerViewController != null)
            {
                // The view reappeared as a results of dismissing an AVPlayerViewController.
                AssetPlaybackManager.Current.SetAssetForPlayback(null);
                playerViewController.Player = null;
                playerViewController        = null;
            }
        }
Exemplo n.º 26
0
        //messaging center class
        private void HandleShowVideoPlayerMessage(Page page, ShowVideoPlayerArguments arguments)
        {
            var presentingViewController = GetMostPresentedViewController();
            var url   = NSUrl.FromString(arguments.Url);
            var avp   = new AVPlayer(url);
            var avpvc = new AVPlayerViewController();

            avpvc.Player = avp;
            avp.Play();

            presentingViewController.PresentViewController(avpvc, animated: true, completionHandler: null);
        }
Exemplo n.º 27
0
        public void PlayVideo(string url)
        {
            var player     = new AVPlayer(new NSUrl(url));
            var controller = new AVPlayerViewController
            {
                Player = player
            };

            var rootViewController = UIApplication.SharedApplication.KeyWindow.RootViewController;

            rootViewController.PresentViewController(controller, true, () => player.Play());
        }
Exemplo n.º 28
0
 private static void SetProperty <T>(
     this AVPlayerViewController controller,
     NSString propertyKey,
     T value,
     AssociationPolicy policy) where T : NSObject
 {
     objc_setAssociatedObject(
         controller.Handle,
         propertyKey.Handle,
         value.Handle,
         policy
         );
 }
Exemplo n.º 29
0
        public static void ShowSubtitles(
            this AVPlayerViewController controller,
            NSUrl fileUrl)
        {
            var subtitles = ParseSubtitles(fileUrl);

            controller.SetPayload(subtitles);
            controller.AddSubtitleLabel();
            controller.Player.AddPeriodicTimeObserver(
                new CMTime(1, 60),
                DispatchQueue.MainQueue,
                controller.ProcessSubtitle
                );
        }
Exemplo n.º 30
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var url   = NSUrl.FromString(pathVideo);
            var avp   = new AVPlayer(url);
            var avpvc = new AVPlayerViewController();

            avpvc.Player = avp;
            this.AddChildViewController(avpvc);
            this.View.AddSubview(avpvc.View);
            avpvc.View.Frame = this.View.Frame;
            avp.Play();
        }