public ProgressTracker(SimpleExoPlayer player, int interval = 200) { DELAY_MS = interval; this.player = player; handler = new Handler(); handler.Post(this); }
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); } }
/// <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); } }
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); } }
protected override void OnPause() { base.OnPause(); _player?.Release(); _player?.Dispose(); _player = null; }
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; }
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; }
private void InitializePlayer() { ExoPlayer = ExoPlayerFactory.NewSimpleInstance(context, new DefaultTrackSelector()); VideoPlayer = new PlayerView(context) { Player = ExoPlayer }; }
protected override void OnInitialize(ElementChangedEventArgs <VideoView> e) { base.OnInitialize(e); player = ExoPlayerFactory.NewSimpleInstance(Context); player.AddListener(this); Control.Player = player; ReportVideoState(VideoState.Configured); }
public AudioPlayer() { _listener = new AudioPlayerEventListener(); _listener.PlayerStateChanged += _listener_PlayerStateChanged; _listener.LoadingChanged += _listener_LoadingChanged; _exoPlayer = ExoPlayerFactory.NewSimpleInstance(Application.Context, new DefaultTrackSelector()); _exoPlayer.AddListener(_listener); }
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); }
private void InitializePlayer() { _player = ExoPlayerFactory.NewSimpleInstance(Context, new DefaultTrackSelector()); _player.PlayWhenReady = true; _playerView = new SimpleExoPlayerView(Context) { Player = _player }; SetNativeControl(_playerView); }
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; }
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 }
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; } }
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 void ReleasePlayer() { try { if (VideoPlayer != null) { VideoPlayer.Release(); VideoPlayer = null; } ViewHolderParent = null; } catch (Exception e) { Console.WriteLine(e); } }
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(); }
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); } }