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++; } }
private IDataSourceFactory GetHttpFactory() { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(Util.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); return(new HttpSourceFactory(httpFactory, RequestHeaders)); }
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; }
void Play(string url) { var httpDataSourceFactory = new DefaultHttpDataSourceFactory(nameof(GitTrends)); var ssChunkFactory = new DefaultSsChunkSource.Factory(httpDataSourceFactory); var ssMediaSourceFactory = new SsMediaSource.Factory(ssChunkFactory, httpDataSourceFactory); _player.Prepare(ssMediaSourceFactory.CreateMediaSource(Uri.Parse(url))); }
private void Play() { Uri sourceUri = Uri.Parse((Element.Source as UriVideoSource).Uri); var httpDataSourceFactory = new DefaultHttpDataSourceFactory("1"); var hlsDataSourceFactory = new DefaultHlsDataSourceFactory(httpDataSourceFactory); Handler emptyHandler = new Handler(); HlsMediaSource hlsMediaSource = new HlsMediaSource(sourceUri, hlsDataSourceFactory, 1, emptyHandler, this); _player.Prepare(hlsMediaSource); }
private void play() { Android.Net.Uri sourceUri = Android.Net.Uri.Parse(Element.Source.ToString()); DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("1"); DefaultSsChunkSource.Factory ssChunkFactory = new DefaultSsChunkSource.Factory(httpDataSourceFactory); Handler emptyHandler = new Handler(); //SsMediaSource ssMediaSource = new SsMediaSource(sourceUri, httpDataSourceFactory, ssChunkFactory, emptyHandler,null); //ExoPlayer.Prepare(ssMediaSource); }
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 IMediaSource GetSourceByUrl(string url) { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(ExoPlayerUtil.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); var factory = new HttpSourceFactory(httpFactory, RequestHeaders); var extractorFactory = new DefaultExtractorsFactory(); var uri = Android.Net.Uri.Parse(url); return(new ExtractorMediaSource(uri , factory , extractorFactory, null, null)); }
private void Play() { if (!string.IsNullOrEmpty(url)) { Uri uri = Uri.Parse(url); var agent = Com.Google.Android.Exoplayer2.Util.Util.GetUserAgent(Context, Context.ApplicationInfo.Name); DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory(agent); DefaultSsChunkSource.Factory ssChunkFactory = new DefaultSsChunkSource.Factory(httpDataSourceFactory); Handler emptyHandler = new Handler(); //SsMediaSource ssMediaSource = new SsMediaSource(uri, httpDataSourceFactory, ssChunkFactory, emptyHandler); var mediaSource = new HlsMediaSource.Factory(httpDataSourceFactory).CreateMediaSource(uri); _player.Prepare(mediaSource); var playing = _player.IsPlaying; } }
/// <summary> /// Plays the video contained in the URL at the given starting position. /// </summary> /// <param name="url">The URL.</param> /// <param name="position">The position.</param> private void PlayVideo(string url, long?position) { LoadingSpinnerView.Visibility = ViewStates.Visible; LoadingSpinnerView.Start(); // // Prepare the standard HTTP information for the source. // var mediaUri = global::Android.Net.Uri.Parse(url); var userAgent = Util.GetUserAgent(Activity, "Crex"); var defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent); var defaultDataSourceFactory = new DefaultDataSourceFactory(Activity, null, defaultHttpDataSourceFactory); IMediaSource source; // // Determine if this is an HLS or MP4 stream. // if (mediaUri.Path.EndsWith(".m3u8", StringComparison.InvariantCultureIgnoreCase) || mediaUri.Path.EndsWith("/hsl", StringComparison.InvariantCultureIgnoreCase)) { using (var factory = new HlsMediaSource.Factory(defaultDataSourceFactory)) { source = factory.CreateMediaSource(mediaUri); } } else { using (var factory = new ExtractorMediaSource.Factory(defaultDataSourceFactory)) { source = factory.CreateMediaSource(mediaUri); } } // // Create the player and get it ready for playback. // AutoPlay = true; VideoPlayer = ExoPlayerFactory.NewSimpleInstance(Activity, new DefaultTrackSelector()); VideoPlayer.AddListener(this); PlayerView.Player = VideoPlayer; if (position.HasValue) { VideoPlayer.SeekTo(position.Value); } VideoPlayer.Prepare(source, !position.HasValue, false); }
void SetSource() { DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("1"); IMediaSource MediaSource = null; string uri = Element.Source; bool autoplay = Element.AutoPlay; bool loop = Element.Loop; if (!string.IsNullOrWhiteSpace(uri)) { MediaSource = new HlsMediaSource.Factory(httpDataSourceFactory) .CreateMediaSource(Android.Net.Uri.Parse(uri)); } if (MediaSource != null) { ExoPlayer.Prepare(MediaSource); ExoPlayer.PlayWhenReady = autoplay; } }
private void Play() { var userAgent = Util.GetUserAgent(Context, "App1"); defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent); defaultDataSourceFactory = new DefaultDataSourceFactory(Context, null, defaultHttpDataSourceFactory); if (Element.Source is UriVideoSource) { string uri = (Element.Source as UriVideoSource).Uri; if (!System.String.IsNullOrWhiteSpace(uri)) { _player.Prepare(BuildMediaSource(Android.Net.Uri.Parse(uri), "")); } } else if (Element.Source is FileVideoSource) { string filename = (Element.Source as FileVideoSource).File; if (!System.String.IsNullOrWhiteSpace(filename)) { //TODO: Implement File Input [NOT SURE IF NEEDED THOUGH] } } else if (Element.Source is ResourceVideoSource) { string package = Context.PackageName; string path = (Element.Source as ResourceVideoSource).Path; if (!System.String.IsNullOrWhiteSpace(path)) { string filename = Path.GetFileNameWithoutExtension(path).ToLowerInvariant(); string uri = "android.resource://" + package + "/raw/" + filename; _player.Prepare(new ExtractorMediaSource.Factory(defaultDataSourceFactory).CreateMediaSource(Android.Net.Uri.Parse(uri))); } } _player.AddListener(this); }
public void PlayAudio(string url) { if (isPlaying) { Stop(); } current_url = url; var context = Android.App.Application.Context; var mediaUri = Android.Net.Uri.Parse(url); var userAgent = Util.GetUserAgent(context, "GlobalFM"); 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); player = ExoPlayerFactory.NewSimpleInstance(context, defaultTrackSelector); player.Prepare(extractorMediaSource); player.PlayWhenReady = true; isPlaying = true; }
public HttpSourceFactory(DefaultHttpDataSourceFactory httpFactory, Dictionary <string, string> headers) { _httpFactory = httpFactory; _headers = headers; }
private IMediaSource GetSourceByUrl(string url) { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(ExoPlayerUtil.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); var factory = new HttpSourceFactory(httpFactory, RequestHeaders); var extractorFactory = new DefaultExtractorsFactory(); var uri = Android.Net.Uri.Parse(url); return new ExtractorMediaSource(uri , factory , extractorFactory, null, null); }
public HttpSourceFactory(DefaultHttpDataSourceFactory httpFactory, Dictionary<string, string> headers) { _httpFactory = httpFactory; _headers = headers; }
private IDataSourceFactory GetHttpFactory() { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(ExoPlayerUtil.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); return new HttpSourceFactory(httpFactory, RequestHeaders); }
void SetSource() { isPrepared = false; bool hasSetSource = false; DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("1"); DefaultSsChunkSource.Factory ssChunkFactory = new DefaultSsChunkSource.Factory(httpDataSourceFactory); Handler emptyHandler = new Handler(); IMediaSource videoSource = null; if (Element.Source is HLSVideoSource) { string uri = (Element.Source as HLSVideoSource).Uri; if (!string.IsNullOrWhiteSpace(uri)) { //videoView.SetVideoURI(Android.Net.Uri.Parse(uri)); videoSource = new HlsMediaSource(Android.Net.Uri.Parse(uri), httpDataSourceFactory, emptyHandler, null); hasSetSource = true; } } else if (Element.Source is UriVideoSource) { string uri = (Element.Source as UriVideoSource).Uri; if (!string.IsNullOrWhiteSpace(uri)) { //videoView.SetVideoURI(Android.Net.Uri.Parse(uri)); var dataSourceFactory = new DefaultDataSourceFactory(Context, Util.GetUserAgent(Context, "Multimedia")); videoSource = new ExtractorMediaSource(Android.Net.Uri.Parse(uri), dataSourceFactory, new DefaultExtractorsFactory(), emptyHandler, null); hasSetSource = true; } } else if (Element.Source is FileVideoSource) { string filename = (Element.Source as FileVideoSource).File; if (!string.IsNullOrWhiteSpace(filename)) { DataSpec dataSpec = new DataSpec(Android.Net.Uri.FromFile(new Java.IO.File(filename))); FileDataSource fileDataSource = new FileDataSource(); try { fileDataSource.Open(dataSpec); } catch (FileDataSource.FileDataSourceException e) { e.PrintStackTrace(); } // videoView.SetVideoPath(filename); IDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this.Context, "CloudMusic"); videoSource = new ExtractorMediaSource(fileDataSource.Uri, dataSourceFactory, new DefaultExtractorsFactory(), emptyHandler, null); hasSetSource = true; } } else if (Element.Source is ResourceVideoSource) { string package = Context.PackageName; string path = (Element.Source as ResourceVideoSource).Path; if (!string.IsNullOrWhiteSpace(path)) { string filename = Path.GetFileNameWithoutExtension(path).ToLowerInvariant(); string uri = "android.resource://" + package + "/raw/" + filename; //videoView.SetVideoURI(Android.Net.Uri.Parse(uri)); videoSource = new SsMediaSource(Android.Net.Uri.Parse(uri), httpDataSourceFactory, ssChunkFactory, emptyHandler, null); hasSetSource = true; } } if (videoSource != null) { ExoPlayer.Prepare(videoSource); } if (hasSetSource && Element.AutoPlay) { ExoPlayer.PlayWhenReady = true; // videoView.Start(); } }
public void Start() { if (_player != null) { Stop(); } _handler.Post(() => { try { var defaultBandwidthMeter = new DefaultBandwidthMeter(); var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter); var defaultTrackSelector = new DefaultTrackSelector(adaptiveTrackSelectionFactory); _player = ExoPlayerFactory.NewSimpleInstance(_context, defaultTrackSelector); _player.AddListener(this); _player.PlayWhenReady = true; if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { var audioFocusRequest = new AudioFocusRequestClass.Builder(AudioFocus.Gain) .SetOnAudioFocusChangeListener(this) .SetAudioAttributes(new AudioAttributes.Builder() .SetUsage(AudioUsageKind.Media) .SetContentType(AudioContentType.Music) .Build()) .Build(); if (_audioManager.RequestAudioFocus(audioFocusRequest) == AudioFocusRequest.Granted) { play(); } } else { #pragma warning disable CS0618 // Type or member is obsolete if (_audioManager.RequestAudioFocus(this, Stream.Music, AudioFocus.Gain) == AudioFocusRequest.Granted) { play(); } #pragma warning restore CS0618 // Type or member is obsolete } } catch (Exception ex) { //Log.Error(TAG, $"Could not start player: {ex.Message}"); //Log.Debug(TAG, ex.ToString()); Error?.Invoke(this, new RadioStationErrorEventArgs(ex)); IsPlaying = false; } }); void play() { var mediaUri = Android.Net.Uri.Parse(StreamUrl); var userAgent = Util.GetUserAgent(_context, "wzxv.app.radio.player"); var defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent); var defaultDataSourceFactory = new DefaultDataSourceFactory(_context, null, defaultHttpDataSourceFactory); var mediaSourceFactory = new ExtractorMediaSource.Factory(defaultDataSourceFactory); var mediaSource = mediaSourceFactory.CreateMediaSource(mediaUri); _player.Prepare(mediaSource); IsPlaying = true; } }
public virtual void Initialize() { if (Player != null) { return; } if (MediaSession == null) { throw new ArgumentNullException(nameof(MediaSession)); } if (RequestHeaders?.Count > 0 && RequestHeaders.TryGetValue("User-Agent", out string userAgent)) { UserAgent = userAgent; } else { UserAgent = Util.GetUserAgent(Context, "MediaManager"); } HttpDataSourceFactory = new DefaultHttpDataSourceFactory(UserAgent); if (RequestHeaders?.Count > 0) { foreach (var item in RequestHeaders) { HttpDataSourceFactory.DefaultRequestProperties.Set(item.Key, item.Value); } } DataSourceFactory = new DefaultDataSourceFactory(Context, null, HttpDataSourceFactory); DashChunkSourceFactory = new DefaultDashChunkSource.Factory(DataSourceFactory); SsChunkSourceFactory = new DefaultSsChunkSource.Factory(DataSourceFactory); BandwidthMeter = new DefaultBandwidthMeter(); TrackSelectionFactory = new AdaptiveTrackSelection.Factory(BandwidthMeter); TrackSelector = new DefaultTrackSelector(TrackSelectionFactory); MediaSource = new ConcatenatingMediaSource(); Player = ExoPlayerFactory.NewSimpleInstance(Context, TrackSelector); var audioAttributes = new Com.Google.Android.Exoplayer2.Audio.AudioAttributes.Builder() .SetUsage(C.UsageMedia) .SetContentType(C.ContentTypeMusic) .Build(); Player.AudioAttributes = audioAttributes; //TODO: Use this in 2.9.0 //Player.SetAudioAttributes(audioAttributes, true); PlayerEventListener = new PlayerEventListener() { OnPlayerErrorImpl = (exception) => { MediaManager.OnMediaItemFailed(this, new MediaItemFailedEventArgs(MediaManager.MediaQueue.Current, exception, exception.Message)); }, OnTracksChangedImpl = (trackGroups, trackSelections) => { MediaManager.MediaQueue.CurrentIndex = Player.CurrentWindowIndex; //TODO: Update metadata of item here } }; Player.AddListener(PlayerEventListener); PlaybackController = new PlaybackController(); MediaSessionConnector = new MediaSessionConnector(MediaSession, PlaybackController); QueueNavigator = new QueueNavigator(MediaSession); MediaSessionConnector.SetQueueNavigator(QueueNavigator); QueueDataAdapter = new QueueDataAdapter(MediaSource); MediaSourceFactory = new QueueEditorMediaSourceFactory(); TimelineQueueEditor = new TimelineQueueEditor(MediaSession.Controller, MediaSource, QueueDataAdapter, MediaSourceFactory); MediaSessionConnector.SetQueueEditor(TimelineQueueEditor); RatingCallback = new RatingCallback(); MediaSessionConnector.SetRatingCallback(RatingCallback); PlaybackPreparer = new MediaSessionConnectorPlaybackPreparer(Player, MediaSource); MediaSessionConnector.SetPlayer(Player, PlaybackPreparer, null); }