private IDataSourceFactory GetHttpFactory() { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(Util.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); return(new HttpSourceFactory(httpFactory, RequestHeaders)); }
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 IMediaSource GetMediaSourceFromUrl(Uri uri, string tag) { try { var mBandwidthMeter = new DefaultBandwidthMeter(); DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(ActivityContext, Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), mBandwidthMeter); var buildHttpDataSourceFactory = new DefaultDataSourceFactory(ActivityContext, mBandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), new DefaultBandwidthMeter())); var buildHttpDataSourceFactoryNull = new DefaultDataSourceFactory(ActivityContext, mBandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), null)); int type = Util.InferContentType(uri, null); var src = type switch { C.TypeSs => new SsMediaSource.Factory(new DefaultSsChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).CreateMediaSource(uri), C.TypeDash => new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).CreateMediaSource(uri), C.TypeHls => new HlsMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri), C.TypeOther => new ExtractorMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri), _ => new ExtractorMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri) }; return(src); } catch (Exception e) { Console.WriteLine(e); return(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; }
private IMediaSource GetMediaSourceFromUrl(Uri uri, string extension, string tag, IDrmSessionManager drmSessionManager) { try { var BandwidthMeter = DefaultBandwidthMeter.GetSingletonInstance(ActivityContext); //DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(MainContext, Util.GetUserAgent(MainContext, AppSettings.ApplicationName), mBandwidthMeter); var buildHttpDataSourceFactory = new DefaultDataSourceFactory(ActivityContext, BandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName))); var buildHttpDataSourceFactoryNull = new DefaultDataSourceFactory(ActivityContext, BandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName))); int type = Util.InferContentType(uri, extension); IMediaSource src = type switch { C.TypeSs => new SsMediaSource.Factory(new DefaultSsChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).SetDrmSessionManager(drmSessionManager).SetDrmSessionManager(IDrmSessionManager.DummyDrmSessionManager).CreateMediaSource(uri), C.TypeDash => new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).SetDrmSessionManager(drmSessionManager).SetDrmSessionManager(IDrmSessionManager.DummyDrmSessionManager).CreateMediaSource(uri), C.TypeHls => new HlsMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).SetDrmSessionManager(IDrmSessionManager.DummyDrmSessionManager).SetDrmSessionManager(drmSessionManager).CreateMediaSource(uri), C.TypeOther => new ProgressiveMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).SetDrmSessionManager(drmSessionManager).CreateMediaSource(uri), _ => new ProgressiveMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).SetDrmSessionManager(drmSessionManager).CreateMediaSource(uri) }; return(src); } catch (Exception e) { Methods.DisplayReportResultTrack(e); return(null !); } }
public void BuildRenderers(MvxVideoPlayer player) { var allocator = new DefaultAllocator(BufferSegmentSize); // Build the video and audio renderers. var bandwidthMeter = new DefaultBandwidthMeter(player.MainHandler, null); var dataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var sampleSource = new ExtractorSampleSource(_uri, dataSource, allocator, BufferSegmentCount * BufferSegmentSize); var videoRenderer = new MediaCodecVideoTrackRenderer(_context, sampleSource, MediaCodecSelector.Default, (int)VideoScalingMode.ScaleToFit, 5000, player.MainHandler, player, 50); var audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, MediaCodecSelector.Default, null, true, player.MainHandler, player, AudioCapabilities.GetCapabilities(_context), (int)Stream.Music); var textRenderer = new TextTrackRenderer(sampleSource, player, player.MainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[MvxVideoPlayer.RendererCount]; renderers[MvxVideoPlayer.TypeVideo] = videoRenderer; renderers[MvxVideoPlayer.TypeAudio] = audioRenderer; renderers[MvxVideoPlayer.TypeText] = textRenderer; player.OnRenderers(renderers, bandwidthMeter); }
public void OnSingleManifest(Object obj) { var manifest = obj.JavaCast <HlsPlaylist>(); if (_canceled) { return; } var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(); var timestampAdjusterProvider = new PtsTimestampAdjusterProvider(); var dataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var chunkSource = new HlsChunkSource( true, dataSource, manifest, DefaultHlsTrackSelector.NewDefaultInstance(_context), bandwidthMeter, timestampAdjusterProvider, HlsChunkSource.AdaptiveModeSplice); var sampleSource = new HlsSampleSource(chunkSource , loadControl , BufferSegments * BufferSegmentSize , mainHandler , _player , MvxVideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , sampleSource , MediaCodecSelector.Default , (int)VideoScalingMode.ScaleToFit , 5000 , mainHandler , _player , 50); var audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource , MediaCodecSelector.Default , null , true , _player.MainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int)Stream.Music); // TODO: The Id3Parser is currently not part of the binding //MetadataTrackRenderer id3Renderer = new MetadataTrackRenderer(sampleSource, new Id3Parser(), player, mainHandler.getLooper()); var closedCaptionRenderer = new Eia608TrackRenderer(sampleSource, _player, mainHandler.Looper); var renderers = new TrackRenderer[MvxVideoPlayer.RendererCount]; renderers[MvxVideoPlayer.TypeVideo] = videoRenderer; renderers[MvxVideoPlayer.TypeAudio] = audioRenderer; //renderers[DemoPlayer.TYPE_METADATA] = id3Renderer; renderers[MvxVideoPlayer.TypeText] = closedCaptionRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
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 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); }
public XCacheDataSourceFactory(Context context, long maxCacheSize, long maxFileSize) { this.context = context; this.maxCacheSize = maxCacheSize; this.maxFileSize = maxFileSize; var userAgent = Util.GetUserAgent(context, "ExoPlayerShit"); var bandwidthMeter = new DefaultBandwidthMeter(); defaultDatasourceFactory = new DefaultDataSourceFactory(context, bandwidthMeter, new DefaultHttpDataSourceFactory(userAgent, bandwidthMeter)); }
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 IMediaSource GetMediaSourceFromUrl(Uri uri, string extension, string tag) { var BandwidthMeter = DefaultBandwidthMeter.GetSingletonInstance(ActivityContext); //DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(ActivityContext, Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), mBandwidthMeter); var buildHttpDataSourceFactory = new DefaultDataSourceFactory(ActivityContext, BandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName))); var buildHttpDataSourceFactoryNull = new DefaultDataSourceFactory(ActivityContext, BandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName))); int type = Util.InferContentType(uri, extension); try { IMediaSource src; switch (type) { case C.TypeSs: src = new SsMediaSource.Factory(new DefaultSsChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).SetDrmSessionManager(IDrmSessionManager.DummyDrmSessionManager).CreateMediaSource(uri); break; case C.TypeDash: src = new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).SetDrmSessionManager(IDrmSessionManager.DummyDrmSessionManager).CreateMediaSource(uri); break; case C.TypeHls: DefaultHlsExtractorFactory defaultHlsExtractorFactory = new DefaultHlsExtractorFactory(DefaultTsPayloadReaderFactory.FlagAllowNonIdrKeyframes, true); src = new HlsMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).SetExtractorFactory(defaultHlsExtractorFactory).CreateMediaSource(uri); break; case C.TypeOther: default: src = new ProgressiveMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri); break; } return(src); } catch (Exception e) { Methods.DisplayReportResultTrack(e); try { return(new ProgressiveMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri)); } catch (Exception exception) { Methods.DisplayReportResultTrack(exception); return(null !); } } }
public CacheableDataSource(Context context, long maxCacheSize, long maxFileSize) { _context = context; _maxCacheSize = maxCacheSize; _maxFileSize = maxFileSize; string userAgent = Util.GetUserAgent(context, _context.GetString(Resource.String.application_name)); DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); _defaultDatasourceFactory = new DefaultDataSourceFactory( this._context, bandwidthMeter, new DefaultHttpDataSourceFactory(userAgent, bandwidthMeter)); }
private void SetPlayer() { try { var BandwidthMeter = DefaultBandwidthMeter.GetSingletonInstance(this); DefaultTrackSelector trackSelector = new DefaultTrackSelector(this); trackSelector.SetParameters(new DefaultTrackSelector.ParametersBuilder(this)); VideoPlayer = new SimpleExoPlayer.Builder(this).SetTrackSelector(trackSelector).Build(); DefaultDataSourceFac = new DefaultDataSourceFactory(this, Util.GetUserAgent(this, AppSettings.ApplicationName), BandwidthMeter); VideoSurfaceView.UseController = true; VideoSurfaceView.Player = VideoPlayer; } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
private IMediaSource GetMediaSourceFromUrl(Uri uri, string tag) { try { var mBandwidthMeter = new DefaultBandwidthMeter(); //DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(ActivityContext, Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), mBandwidthMeter); var buildHttpDataSourceFactory = new DefaultDataSourceFactory(ActivityContext, mBandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), new DefaultBandwidthMeter())); var buildHttpDataSourceFactoryNull = new DefaultDataSourceFactory(ActivityContext, mBandwidthMeter, new DefaultHttpDataSourceFactory(Util.GetUserAgent(ActivityContext, AppSettings.ApplicationName), null)); int type = Util.InferContentType(uri, null); IMediaSource src; switch (type) { case C.TypeSs: src = new SsMediaSource.Factory(new DefaultSsChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).CreateMediaSource(uri); break; case C.TypeDash: src = new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(buildHttpDataSourceFactory), buildHttpDataSourceFactoryNull).SetTag(tag).CreateMediaSource(uri); break; case C.TypeHls: src = new HlsMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri); break; case C.TypeOther: src = new ExtractorMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri); break; default: //src = Exception("Unsupported type: " + type); src = new ExtractorMediaSource.Factory(buildHttpDataSourceFactory).SetTag(tag).CreateMediaSource(uri); break; } return(src); } catch (Exception e) { Console.WriteLine(e); return(null); } }
public void Init(Context context, Com.Google.Android.Exoplayer2.UI.PlayerView playerView) { // Create a default track selector. var bandwidthMeter = new DefaultBandwidthMeter(); var videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); // Create a player instance. player = ExoPlayerFactory.NewSimpleInstance(context, trackSelector); // Bind the player to the view. playerView.Player = (player); // This is the MediaSource representing the content media (i.e. not the ad). var contentUrl = url; //context.GetString (Resource.String.test_content_url); HlsMediaSource.Factory hlsfac = new HlsMediaSource.Factory(mediaDataSourceFactory); //var hlsMediaSource = hlsfac.CreateMediaSource (Uri.Parse(contentUrl)); var hlsMediaSource = new HlsMediaSource(Uri.Parse(contentUrl), mediaDataSourceFactory, null, null); //var contentMediaSource = //BuildMediaSource (Uri.Parse (contentUrl),""); // Compose the content media source into a new AdsMediaSource with both ads and content. var mediaSourceWithAds = hlsMediaSource; // new AdsMediaSource( // hlsMediaSource, // /* adMediaSourceFactory= */ this, // adsLoader, // playerView.getOverlayFrameLayout(), // /* eventHandler= */ null, // /* eventListener= */ null); // Prepare the player with the source. player.SeekTo(contentPosition); player.Prepare(hlsMediaSource); player.PlayWhenReady = (true); }
public void InitPlayer() { _context = CrossRxMediaPlayer.AppContext; // 1. Create a default TrackSelector Handler mainHandler = new Handler(); _defaultBandwidthMeter = new DefaultBandwidthMeter(); _adaptiveVideoTrackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(_defaultBandwidthMeter); _trackSelector = new DefaultTrackSelector(_adaptiveVideoTrackSelectionFactory); // 2. Create a default LoadControl _defaultLoadControl = new DefaultLoadControl(); // 3. Create the player TheExoPlayer = ExoPlayerFactory.NewSimpleInstance(_context, _trackSelector, _defaultLoadControl); TheExoPlayer.AddListener(this); PlayerStatesSubject = new BehaviorSubject <PlayerState>(PlayerState.Idle); }
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 void BuildRenderers(VideoPlayer player) { var allocator = new DefaultAllocator(BufferSegmentSize); // Build the video and audio renderers. var bandwidthMeter = new DefaultBandwidthMeter(player.MainHandler, null); var dataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var sampleSource = new ExtractorSampleSource(_uri , dataSource , allocator , BufferSegmentCount*BufferSegmentSize); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , sampleSource , MediaCodecSelector.Default , (int) VideoScalingMode.ScaleToFit , 5000 , player.MainHandler , player , 50); var audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource , MediaCodecSelector.Default , null , true , player.MainHandler , player , AudioCapabilities.GetCapabilities(_context) , (int) Stream.Music); var textRenderer = new TextTrackRenderer(sampleSource , player , player.MainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; renderers[VideoPlayer.TypeText] = textRenderer; player.OnRenderers(renderers, bandwidthMeter); }
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 void OnSingleManifest(Object obj) { var manifest = obj.JavaCast<SmoothStreamingManifest>(); if (_canceled) { return; } var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(mainHandler, _player); // Check drm support if necessary. IDrmSessionManager drmSessionManager = null; if (manifest.ProtectionElement != null) { if (ExoPlayerUtil.SdkInt < 18) { _player.OnRenderersError( new UnsupportedDrmException(UnsupportedDrmException.ReasonUnsupportedScheme)); return; } try { drmSessionManager = new StreamingDrmSessionManager(manifest.ProtectionElement.Uuid, _player.PlaybackLooper, _drmCallback, null, _player.MainHandler, _player); } catch (Exception e) { _player.OnRenderersError(e); return; } } // Build the video renderer. var videoDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var videoChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewVideoInstance(_context, true, false) , videoDataSource , new FormatEvaluatorAdaptiveEvaluator(bandwidthMeter) , LiveEdgeLatencyMs); var videoSampleSource = new ChunkSampleSource(videoChunkSource , loadControl , VideoBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , videoSampleSource , MediaCodecSelector.Default , (int)VideoScalingMode.ScaleToFit , 5000 , drmSessionManager , true , mainHandler , _player , 50); // Build the audio renderer. var audioDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var audioChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewAudioInstance() , audioDataSource , null , LiveEdgeLatencyMs); var audioSampleSource = new ChunkSampleSource(audioChunkSource , loadControl , AudioBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeAudio); var audioRenderer = new MediaCodecAudioTrackRenderer(audioSampleSource , MediaCodecSelector.Default , drmSessionManager , true , mainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int) Stream.Music); // Build the text renderer. var textDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var textChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewTextInstance() , textDataSource , null , LiveEdgeLatencyMs); var textSampleSource = new ChunkSampleSource(textChunkSource , loadControl , TextBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeText); var textRenderer = new TextTrackRenderer(textSampleSource , _player , mainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; renderers[VideoPlayer.TypeText] = textRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
public IHttpDataSourceFactory BuildHttpDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) { return(new DefaultHttpDataSourceFactory(UserAgent, bandwidthMeter)); }
static AdaptivePlayer() { _bandwidthMeter = new DefaultBandwidthMeter(); _defaultCookieManager = new CookieManager(); _defaultCookieManager.SetCookiePolicy(CookiePolicy.AcceptOriginalServer); }
public IHttpDataSourceFactory BuildHttpDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) { return(new DefaultHttpDataSourceFactory(Util.GetUserAgent(this, "ProducerExoPlayer"), bandwidthMeter)); }
public IDataSourceFactory BuildDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) { return(new DefaultDataSourceFactory(this, bandwidthMeter, BuildHttpDataSourceFactory(bandwidthMeter))); }
public void OnSingleManifest(Object obj) { var manifest = obj.JavaCast<HlsPlaylist>(); if (_canceled) { return; } var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(); var timestampAdjusterProvider = new PtsTimestampAdjusterProvider(); var dataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var chunkSource = new HlsChunkSource(true , dataSource , _url , manifest , DefaultHlsTrackSelector.NewDefaultInstance(_context) , bandwidthMeter , timestampAdjusterProvider , HlsChunkSource.AdaptiveModeSplice); var sampleSource = new HlsSampleSource(chunkSource , loadControl , BufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , sampleSource , MediaCodecSelector.Default , (int) VideoScalingMode.ScaleToFit , 5000 , mainHandler , _player , 50); var audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource , MediaCodecSelector.Default , null , true , _player.MainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int) Stream.Music); // TODO: The Id3Parser is currently not part of the binding //MetadataTrackRenderer id3Renderer = new MetadataTrackRenderer(sampleSource, new Id3Parser(), player, mainHandler.getLooper()); var closedCaptionRenderer = new Eia608TrackRenderer(sampleSource, _player, mainHandler.Looper); var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; //renderers[DemoPlayer.TYPE_METADATA] = id3Renderer; renderers[VideoPlayer.TypeText] = closedCaptionRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
private IDataSourceFactory GetHttpFactory() { var bandwithMeter = new DefaultBandwidthMeter(); var httpFactory = new DefaultHttpDataSourceFactory(ExoPlayerUtil.GetUserAgent(this, ApplicationInfo.Name), bandwithMeter); return new HttpSourceFactory(httpFactory, RequestHeaders); }
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); }
private void BuildRenderers() { var period = _manifest.GetPeriod(0); var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(mainHandler, _player); var hasContentProtection = false; var sets = period.AdaptationSets .OfType <Object>() .Select(item => item.JavaCast <AdaptationSet>()) .ToList(); foreach (var set in sets) { if (set.Type != AdaptationSet.TypeUnknown) { hasContentProtection |= set.HasContentProtection; } } // Check drm support if necessary. var filterHdContent = false; StreamingDrmSessionManager drmSessionManager = null; if (hasContentProtection) { if (ExoPlayerUtil.SdkInt < 18) { _player.OnRenderersError(new UnsupportedDrmException(UnsupportedDrmException.ReasonUnsupportedScheme)); return; } try { drmSessionManager = StreamingDrmSessionManager.NewWidevineInstance(_player.PlaybackLooper, _drmCallback, null, _player.MainHandler, _player); filterHdContent = GetWidevineSecurityLevel(drmSessionManager) != SecurityLevel1; } catch (UnsupportedDrmException e) { _player.OnRenderersError(e); return; } } // Build the video renderer. var videoDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var videoChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewVideoInstance(_context, true, filterHdContent) , videoDataSource , new FormatEvaluatorAdaptiveEvaluator(bandwidthMeter) , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , EventSourceId); var videoSampleSource = new ChunkSampleSource(videoChunkSource , loadControl , VideoBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , videoSampleSource , MediaCodecSelector.Default , (int)VideoScalingMode.ScaleToFit , 5000 , drmSessionManager , true , mainHandler , _player , 50); // Build the audio renderer. var audioDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var audioChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewAudioInstance() , audioDataSource , null , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , VideoPlayer.TypeAudio); var audioSampleSource = new ChunkSampleSource(audioChunkSource , loadControl , AudioBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeAudio); var audioRenderer = new MediaCodecAudioTrackRenderer(audioSampleSource , MediaCodecSelector.Default , drmSessionManager , true , mainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int)Stream.Music); // Build the text renderer. var textDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var textChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewTextInstance() , textDataSource , null , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , VideoPlayer.TypeText); var textSampleSource = new ChunkSampleSource(textChunkSource , loadControl , TextBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeText); var textRenderer = new TextTrackRenderer(textSampleSource , _player , mainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; renderers[VideoPlayer.TypeText] = textRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
public void OnSingleManifest(Object obj) { var manifest = obj.JavaCast <SmoothStreamingManifest>(); if (_canceled) { return; } var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(mainHandler, _player); // Check drm support if necessary. IDrmSessionManager drmSessionManager = null; if (manifest.ProtectionElement != null) { if (ExoPlayerUtil.SdkInt < 18) { _player.OnRenderersError( new UnsupportedDrmException(UnsupportedDrmException.ReasonUnsupportedScheme)); return; } try { drmSessionManager = new StreamingDrmSessionManager(manifest.ProtectionElement.Uuid, _player.PlaybackLooper, _drmCallback, null, _player.MainHandler, _player); } catch (Exception e) { _player.OnRenderersError(e); return; } } // Build the video renderer. var videoDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var videoChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewVideoInstance(_context, true, false) , videoDataSource , new FormatEvaluatorAdaptiveEvaluator(bandwidthMeter) , LiveEdgeLatencyMs); var videoSampleSource = new ChunkSampleSource(videoChunkSource , loadControl , VideoBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , videoSampleSource , MediaCodecSelector.Default , (int)VideoScalingMode.ScaleToFit , 5000 , drmSessionManager , true , mainHandler , _player , 50); // Build the audio renderer. var audioDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var audioChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewAudioInstance() , audioDataSource , null , LiveEdgeLatencyMs); var audioSampleSource = new ChunkSampleSource(audioChunkSource , loadControl , AudioBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeAudio); var audioRenderer = new MediaCodecAudioTrackRenderer(audioSampleSource , MediaCodecSelector.Default , drmSessionManager , true , mainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int)Stream.Music); // Build the text renderer. var textDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var textChunkSource = new SmoothStreamingChunkSource(_manifestFetcher , DefaultSmoothStreamingTrackSelector.NewTextInstance() , textDataSource , null , LiveEdgeLatencyMs); var textSampleSource = new ChunkSampleSource(textChunkSource , loadControl , TextBufferSegments * BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeText); var textRenderer = new TextTrackRenderer(textSampleSource , _player , mainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; renderers[VideoPlayer.TypeText] = textRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
private void BuildRenderers() { var period = _manifest.GetPeriod(0); var mainHandler = _player.MainHandler; var loadControl = new DefaultLoadControl(new DefaultAllocator(BufferSegmentSize)); var bandwidthMeter = new DefaultBandwidthMeter(mainHandler, _player); var hasContentProtection = false; var sets = period.AdaptationSets .OfType<Object>() .Select(item => item.JavaCast<AdaptationSet>()) .ToList(); foreach (var set in sets) { if (set.Type != AdaptationSet.TypeUnknown) { hasContentProtection |= set.HasContentProtection; } } // Check drm support if necessary. var filterHdContent = false; StreamingDrmSessionManager drmSessionManager = null; if (hasContentProtection) { if (ExoPlayerUtil.SdkInt < 18) { _player.OnRenderersError(new UnsupportedDrmException(UnsupportedDrmException.ReasonUnsupportedScheme)); return; } try { drmSessionManager = StreamingDrmSessionManager.NewWidevineInstance(_player.PlaybackLooper, _drmCallback, null, _player.MainHandler, _player); filterHdContent = GetWidevineSecurityLevel(drmSessionManager) != SecurityLevel1; } catch (UnsupportedDrmException e) { _player.OnRenderersError(e); return; } } // Build the video renderer. var videoDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var videoChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewVideoInstance(_context, true, filterHdContent) , videoDataSource , new FormatEvaluatorAdaptiveEvaluator(bandwidthMeter) , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , EventSourceId); var videoSampleSource = new ChunkSampleSource(videoChunkSource , loadControl , VideoBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeVideo); var videoRenderer = new MediaCodecVideoTrackRenderer(_context , videoSampleSource , MediaCodecSelector.Default , (int) VideoScalingMode.ScaleToFit , 5000 , drmSessionManager , true , mainHandler , _player , 50); // Build the audio renderer. var audioDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var audioChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewAudioInstance() , audioDataSource , null , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , VideoPlayer.TypeAudio); var audioSampleSource = new ChunkSampleSource(audioChunkSource , loadControl , AudioBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeAudio); var audioRenderer = new MediaCodecAudioTrackRenderer(audioSampleSource , MediaCodecSelector.Default , drmSessionManager , true , mainHandler , _player , AudioCapabilities.GetCapabilities(_context) , (int) Stream.Music); // Build the text renderer. var textDataSource = new DefaultUriDataSource(_context, bandwidthMeter, _userAgent); var textChunkSource = new DashChunkSource(_manifestFetcher , DefaultDashTrackSelector.NewTextInstance() , textDataSource , null , LiveEdgeLatencyMs , _elapsedRealtimeOffset , mainHandler , _player , VideoPlayer.TypeText); var textSampleSource = new ChunkSampleSource(textChunkSource , loadControl , TextBufferSegments*BufferSegmentSize , mainHandler , _player , VideoPlayer.TypeText); var textRenderer = new TextTrackRenderer(textSampleSource , _player , mainHandler.Looper); // Invoke the callback. var renderers = new TrackRenderer[VideoPlayer.RendererCount]; renderers[VideoPlayer.TypeVideo] = videoRenderer; renderers[VideoPlayer.TypeAudio] = audioRenderer; renderers[VideoPlayer.TypeText] = textRenderer; _player.OnRenderers(renderers, bandwidthMeter); }
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; } }