public ProgressTracker(SimpleExoPlayer player, int interval = 200)
 {
     DELAY_MS    = interval;
     this.player = player;
     handler     = new Handler();
     handler.Post(this);
 }
Exemple #2
0
 public void Stop()
 {
     _handler.Post(() =>
     {
         try
         {
             if (_player != null)
             {
                 IsPlaying = false;
                 _player.RemoveListener(this);
                 _player.Release();
                 StateChanged?.Invoke(this, EventArgs.Empty);
             }
         }
         catch (Exception ex)
         {
             Android.Util.Log.Warn(TAG, $"Error during stop of player: {ex.Message}");
             Android.Util.Log.Debug(TAG, ex.ToString());
         }
         finally
         {
             _player = null;
         }
     });
 }
        public void Play(string url)
        {
            if (clicks % 2 == 0)
            {
                #region ExoPlayer

                var mediaUrl = url;
                var mediaUri = Android.Net.Uri.Parse(mediaUrl);
                Android.Content.Context context = Android.App.Application.Context;
                var userAgent = Util.GetUserAgent(context, "InstationPlayer");
                var defaultHttpDataSourceFactory  = new DefaultHttpDataSourceFactory(userAgent);
                var defaultDataSourceFactory      = new DefaultDataSourceFactory(context, null, defaultHttpDataSourceFactory);
                var extractorMediaSource          = new ExtractorMediaSource(mediaUri, defaultDataSourceFactory, new DefaultExtractorsFactory(), null, null);
                var defaultBandwidthMeter         = new DefaultBandwidthMeter();
                var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter);
                var defaultTrackSelector          = new DefaultTrackSelector(adaptiveTrackSelectionFactory);

                exoPlayer = ExoPlayerFactory.NewSimpleInstance(context, defaultTrackSelector);
                exoPlayer.Prepare(extractorMediaSource);
                Console.WriteLine("Prepared");
                exoPlayer.PlayWhenReady = true;
                Console.WriteLine("Started");
                clicks++;

                #endregion
            }
            else if (clicks % 2 != 0)
            {
                exoPlayer.Stop();
                Console.WriteLine("Paused");
                clicks++;
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <VideoPlayerExo> e)
        {
            base.OnElementChanged(e);

            if (_player != null)
            {
                _player.Release();
            }
            if (_player == null)
            {
                _player = ExoPlayerFactory.NewSimpleInstance(Context);
                _player.PlayWhenReady = true;
                _view                    = new SimpleExoPlayerView(Context);
                _view.Background         = new GradientDrawable(GradientDrawable.Orientation.BottomTop, new int[] { Color.Transparent.ToAndroid(), Color.Transparent.ToAndroid() });
                _view.ControllerAutoShow = false;

                _view.UseController         = false;
                _player.RenderedFirstFrame += _player_RenderedFirstFrame;
                _player.VideoSizeChanged   += _player_VideoSizeChanged;

                _view.Player = _player;

                url = e.NewElement.Source;
                SetNativeControl(_view);
            }

            Play();
        }
        public void ReleaseVideo()
        {
            try
            {
                if (Player != null)
                {
                    SetStopVideo();

                    Player?.Release();
                    Player = null !;

                    //GC Collector
                    GC.Collect();
                }

                TabbedMainActivity.GetInstance()?.SetOffWakeLock();

                //var tab = VideoViewerActivity.GetInstance()?.TabVideosAbout;
                //if (tab != null)
                //{
                //    tab.VideoDescriptionLayout.Visibility = ViewStates.Visible;
                //    tab.VideoTittle.Text = VideoData?.Name;
                //}

                SimpleExoPlayerView.Player = null !;
                ReleaseAdsLoader();
            }
            catch (Exception exception)
            {
                Methods.DisplayReportResultTrack(exception);
            }
        }
Exemple #6
0
 /// <summary>
 /// Releases the player.
 /// </summary>
 private void ReleasePlayer()
 {
     if (_player != null)
     {
         _debugViewHelper.Stop();
         _debugViewHelper       = null;
         _shouldAutoPlay        = _player.PlayWhenReady;
         _shouldRestorePosition = false;
         Timeline timeline = _player.CurrentTimeline;
         if (timeline != null)
         {
             _playerWindow = _player.CurrentWindowIndex;
             Timeline.Window window = timeline.GetWindow(_playerWindow, new Timeline.Window());
             if (!window.IsDynamic)
             {
                 _shouldRestorePosition = true;
                 _playerPosition        = window.IsSeekable ? _player.CurrentPosition : C.TimeUnset;
             }
         }
         _player.Release();
         _player               = null;
         _trackSelector        = null;
         _trackSelectionHelper = null;
         _eventLogger          = null;
     }
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            context = this;

            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

            var processButton = FindViewById<Button>(Resource.Id.processButton);
            processButton.Click += ProcessButton_Click;

            _playerView = FindViewById<PlayerView>(Resource.Id.playerView);

            _sourceMedia = new SourceMedia();
            _targetMedia = new TargetMedia();
            _transformationState = new TransformationState();
            _trimConfig = new TrimConfig();

            _mediaTransformer = new MediaTransformer(this);


            var builder = new SimpleExoPlayer.Builder(this);
            _player = builder.Build();

            _player.PlayWhenReady = true;
            _playerView.Player = _player;
        }
        public void ReleaseVideo()
        {
            try
            {
                if (Player != null)
                {
                    Player?.Release();
                    Player = null;

                    //GC Collecter
                    GC.Collect();
                }

                if (Download_icon.Tag.ToString() != "false")
                {
                    Download_icon.SetImageDrawable(ActivityContext.GetDrawable(Resource.Drawable.ic_action_download));
                    Download_icon.Tag = "false";
                }

                videoDescriptionLayout.Visibility = ViewStates.Visible;

                if (Videodata != null)
                {
                    Video_Titile.Text = Videodata.name;
                }

                simpleExoPlayerView.Player = null;
            }
            catch (Exception exception)
            {
                Crashes.TrackError(exception);
            }
        }
Exemple #9
0
        public void ReleaseVideo()
        {
            try
            {
                if (Player != null)
                {
                    SetStopvideo();

                    Player?.Release();
                    Player = null;

                    //GC Collecter
                    GC.Collect();
                }

                if (TimerAds != null)
                {
                    TimerAds.Enabled = false;
                    TimerAds.Stop();
                    TimerAds = null;
                }

                ReleaseAdsLoader();

                if (DownloadIcon.Tag.ToString() != "false")
                {
                    DownloadIcon.SetImageResource(Resource.Drawable.ic_action_download);
                    DownloadIcon.Tag = "false";
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
Exemple #10
0
 protected override void OnPause()
 {
     base.OnPause();
     _player?.Release();
     _player?.Dispose();
     _player = null;
 }
Exemple #11
0
        public void playVideo(string url, string typestream)
        {
            var MyURL    = url;
            var mediaUri = Android.Net.Uri.Parse(MyURL);

            var userAgent = Util.GetUserAgent(this, "Player");
            var defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent);
            var defaultDataSourceFactory     = new DefaultDataSourceFactory(this, null, defaultHttpDataSourceFactory);

            if (typestream == "HLS")
            {
                playerView.UseController = false;
                extractorMediaSource     = new HlsMediaSource.Factory(defaultDataSourceFactory).CreateMediaSource(mediaUri);
            }
            else if (typestream == "MP4")
            {
                extractorMediaSource = new ExtractorMediaSource(mediaUri, defaultDataSourceFactory, new DefaultExtractorsFactory(), null, null);
            }
            ConcatenatingMediaSource concatenatedSource =
                new ConcatenatingMediaSource(extractorMediaSource);
            var defaultBandwidthMeter         = new DefaultBandwidthMeter();
            var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter);
            var defaultTrackSelector          = new DefaultTrackSelector(adaptiveTrackSelectionFactory);

            player = ExoPlayerFactory.NewSimpleInstance(this, defaultTrackSelector);

            player.Prepare(concatenatedSource);

            player.AddListener(new CustomListener());

            playerView.Player = player;

            player.PlayWhenReady = true;
        }
Exemple #12
0
        protected override void OnElementChanged(ElementChangedEventArgs <ExtendedVideoPlayer> e)
        {
            base.OnElementChanged(e);

            string s = Element.Source;

            //
            // Will be invoked by the Xamarin.Forms page when the last is closed
            //
            Element.ReleaseAction = PlayerRelease;

            _exoSpot = new PlayerView(Context);
            //
            // Video will be expanded on full screen
            //
            _exoSpot.SetResizeMode(AspectRatioFrameLayout.ResizeModeFit);

            SetNativeControl(_exoSpot);

            //
            // Create a default TrackSelector
            //
            Handler         mainHandler    = new Handler();
            IBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();

            AdaptiveTrackSelection.Factory videoTrackSelectionFactory =
                new AdaptiveTrackSelection.Factory(bandwidthMeter);

            TrackSelector trackSelector =
                new DefaultTrackSelector(videoTrackSelectionFactory);

            //
            // Create the player
            //
            _exoPlayer =
                ExoPlayerFactory.NewSimpleInstance(Context, trackSelector);
            _exoPlayer.AddListener(new ExtendedVideoPlayerEventListener(_exoPlayer));
            _exoPlayer.PlayWhenReady = true;

            //
            // Attach player to the view
            //
            _exoSpot.Player = _exoPlayer;

            DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(Context,
                                                                                      Util.GetUserAgent(Context, Context.GetString(Resource.String.application_name)));

            IMediaSource videoSource = new ExtractorMediaSource(
                Android.Net.Uri.Parse(Element.Source),
                new CacheableDataSource(Context, 100 * 1024 * 1024, 5 * 1024 * 1024),
                new DefaultExtractorsFactory(),
                null,
                null);

            //
            // Prepare the player with the source.
            //
            _exoPlayer.Prepare(videoSource);
        }
 public override void OnBackPressed()
 {
     base.OnBackPressed();
     player.PlayWhenReady = false;
     player.Release();
     playerView.KeepScreenOn = false;
     player = null;
 }
Exemple #14
0
 private void InitializePlayer()
 {
     ExoPlayer   = ExoPlayerFactory.NewSimpleInstance(context, new DefaultTrackSelector());
     VideoPlayer = new PlayerView(context)
     {
         Player = ExoPlayer
     };
 }
Exemple #15
0
 protected override void OnInitialize(ElementChangedEventArgs <VideoView> e)
 {
     base.OnInitialize(e);
     player = ExoPlayerFactory.NewSimpleInstance(Context);
     player.AddListener(this);
     Control.Player = player;
     ReportVideoState(VideoState.Configured);
 }
Exemple #16
0
        public AudioPlayer()
        {
            _listener = new AudioPlayerEventListener();
            _listener.PlayerStateChanged += _listener_PlayerStateChanged;
            _listener.LoadingChanged     += _listener_LoadingChanged;

            _exoPlayer = ExoPlayerFactory.NewSimpleInstance(Application.Context, new DefaultTrackSelector());
            _exoPlayer.AddListener(_listener);
        }
Exemple #17
0
        public void InitializePlayer()
        {
            var userAgent = Util.GetUserAgent(this, "Player");
            var defaultHttpDataSourceFactory  = new DefaultHttpDataSourceFactory(userAgent);
            var defaultBandwidthMeter         = new DefaultBandwidthMeter();
            var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter);
            var defaultTrackSelector          = new DefaultTrackSelector(adaptiveTrackSelectionFactory);

            player = ExoPlayerFactory.NewSimpleInstance(this, defaultTrackSelector);
        }
Exemple #18
0
 private void InitializePlayer()
 {
     _player = ExoPlayerFactory.NewSimpleInstance(Context, new DefaultTrackSelector());
     _player.PlayWhenReady = true;
     _playerView           = new SimpleExoPlayerView(Context)
     {
         Player = _player
     };
     SetNativeControl(_playerView);
 }
Exemple #19
0
        protected override void OnInitialize(ElementChangedEventArgs <VideoView> e)
        {
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
            base.OnInitialize(e);

            httpFactory = CreateHttpDataSourceFactory(Context, "MediaPlayer.Android");
            player      = CreatePlayerWithDrm(Context, httpFactory);
            AddPlayerListeners();
            Control.Player = player;
            Element.VideoPlayerReadyCommand?.Execute(this);
        }
        protected override void Dispose(bool disposing)
        {
            _player.Stop();
            _player.Release();

            trackSelector.Dispose();

            base.Dispose(disposing);
            _playerView   = null;
            trackSelector = null;
            _player       = null;
        }
 public override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetStyle((int)DialogFragmentStyle.Normal, Resource.Style.ShootDialog);
     webclient = new OkHttpClient.Builder()
                 .Cache((Activity.Application as BootleggerApp).FilesCache)
                 .Build();
     httpDataSourceFactory            = new OkHttpDataSourceFactory(webclient, "BootleggerEditor");
     extractorsFactory                = new DefaultExtractorsFactory();
     _audioPlayer                     = ExoPlayerFactory.NewSimpleInstance(Context, new DefaultTrackSelector());
     _audioPlayer.RenderedFirstFrame += _audioPlayer_RenderedFirstFrame;
 }
Exemple #22
0
        public RadioPlayer(Context context, string url)
        {
            _sourceUrl = url;

#pragma warning disable 612, 618
            var agent   = WebSettings.GetDefaultUserAgent(context);
            var factory = new DefaultDataSourceFactory(context, agent);
            var extractorMediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(url), factory, new DefaultExtractorsFactory(), null, null);

            _exoPlayer = ExoPlayerFactory.NewSimpleInstance(context);
            _exoPlayer.Prepare(extractorMediaSource);
#pragma warning restore 612, 618
        }
Exemple #23
0
        private void InitializePlayer()
        {
            _player = ExoPlayerFactory.NewSimpleInstance(Context, new DefaultTrackSelector());
            _player.PlayWhenReady = true;

            _playerView = new PlayerView(Context);
            this.AddView(_playerView);
            _playerView.LayoutParameters = new FrameLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);

            _playerView.UseController = false;

            _playerView.Player = _player;
        }
        public VideoPlayerViewCustomRenderer(Context context) : base(context)
        {
            _player = new SimpleExoPlayer.Builder(context).Build();

            _player.PlayWhenReady = true;
            _player.RepeatMode    = (int)RepeatMode.Restart;

            _playerView = new PlayerView(context)
            {
                UseController      = false,
                Player             = _player,
                ControllerAutoShow = false
            };
        }
        public override void InitializePlayer()
        {
            var mainHandler = new Handler();
            var trackSelector = new DefaultTrackSelector(mainHandler);
            trackSelector.AddListener(this);
            var loadControl = new DefaultLoadControl();
            if (_mediaPlayer == null)
            {
                _mediaPlayer = ExoPlayerFactory.NewSimpleInstance(ApplicationContext, trackSelector, loadControl);
                _mediaPlayer.AddListener(this);
            }

            StatusChanged += (sender, args) => OnStatusChangedHandler(args);
        }
 private void ReleasePlayer()
 {
     if (player != null)
     {
         debugViewHelper.Stop();
         debugViewHelper = null;
         shouldAutoPlay  = player.PlayWhenReady;
         UpdateResumePosition();
         player.Release();
         player               = null;
         trackSelector        = null;
         trackSelectionHelper = null;
         eventLogger          = null;
     }
 }
Exemple #27
0
        public void PlayVideo(string videoUrL, VideoObject videoObject, long resumePosition)
        {
            try
            {
                if (Player != null)
                {
                    SetStopvideo();

                    Player?.Release();
                    Player = null;

                    //GC Collecter
                    GC.Collect();
                }

                AdaptiveTrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory();
                var trackSelector = new DefaultTrackSelector(trackSelectionFactory);
                var newParameters = new DefaultTrackSelector.ParametersBuilder()
                                    .SetMaxVideoSizeSd()
                                    .SetPreferredAudioLanguage("deu")
                                    .Build();
                trackSelector.SetParameters(newParameters);

                Player = ExoPlayerFactory.NewSimpleInstance(ActivityContext, trackSelector);
                FullWidthSetting();

                DefaultDataMediaFactory = new DefaultDataSourceFactory(ActivityContext, Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), BandwidthMeter);

                VideoSource = null;
                VideoSource = GetMediaSourceFromUrl(Uri.Parse(videoUrL), "normal");

                SimpleExoPlayerView.Player = Player;
                Player.Prepare(VideoSource);
                Player.AddListener(PlayerListener);
                Player.PlayWhenReady = true;
                Player.AddVideoListener(this);

                bool haveResumePosition = ResumeWindow != C.IndexUnset;
                if (haveResumePosition)
                {
                    Player.SeekTo(ResumeWindow, resumePosition);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        public override void InitializePlayer()
        {
            var mainHandler   = new Handler();
            var trackSelector = new DefaultTrackSelector(mainHandler);

            trackSelector.AddListener(this);
            var loadControl = new DefaultLoadControl();

            if (_mediaPlayer == null)
            {
                _mediaPlayer = ExoPlayerFactory.NewSimpleInstance(ApplicationContext, trackSelector, loadControl);
                _mediaPlayer.AddListener(this);
            }

            StatusChanged += (sender, args) => OnStatusChangedHandler(args);
        }
Exemple #29
0
        public void ReleasePlayer()
        {
            try
            {
                if (VideoPlayer != null)
                {
                    VideoPlayer.Release();
                    VideoPlayer = null;
                }

                ViewHolderParent = null;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Exemple #30
0
        private void ReleasePlayer()
        {
            if (player != null)
            {
                UpdateTrackSelectorParameters();
                UpdateStartPosition();
                debugViewHelper.Stop();
                debugViewHelper = null;
                player.Release();
                player        = null;
                mediaSource   = null;
                trackSelector = null;

                //Todo: implement IAnalyticsListener
                eventLogger = null;
            }
            ReleaseMediaDrm();
        }
Exemple #31
0
        private IMediaSource CreateMediaSourceWithAds(IMediaSource videoSource, Uri imAdsUri)
        {
            try
            {
                Player = ExoPlayerFactory.NewSimpleInstance(ActivityContext);
                SimpleExoPlayerView.Player = Player;

                if (ImaAdsLoader == null)
                {
                    var imaSdkSettings = ImaSdkFactory.Instance.CreateImaSdkSettings();
                    imaSdkSettings.AutoPlayAdBreaks = true;
                    imaSdkSettings.DebugMode        = true;

                    ImaAdsLoader = new ImaAdsLoader.Builder(ActivityContext)
                                   .SetImaSdkSettings(imaSdkSettings)
                                   .SetMediaLoadTimeoutMs(30 * 1000)
                                   .SetVastLoadTimeoutMs(30 * 1000)
                                   .BuildForAdTag(imAdsUri); // here is url for vast xml file

                    ImaAdsLoader.SetPlayer(Player);

                    IMediaSource mediaSourceWithAds = new AdsMediaSource(
                        videoSource,
                        new AdMediaSourceFactory(this),
                        ImaAdsLoader,
                        SimpleExoPlayerView);

                    return(mediaSourceWithAds);
                }

                return(new AdsMediaSource(videoSource, new AdMediaSourceFactory(this), ImaAdsLoader, SimpleExoPlayerView));
            }
            catch (ClassNotFoundException e)
            {
                Console.WriteLine(e.Message);
                // IMA extension not loaded.
                return(null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }