private void PrepareSingleSource(string uri, MediaItem media) { durationSet = false; if (uri.StartsWith("file://")) { mediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(uri), defaultDataSourceFactory, extractorsFactory, null, null); } else { mediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(uri), httpDataSourceFactory, extractorsFactory, null, null); } //mediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(uri), httpDataSourceFactory, extractorsFactory, null, null); try { _player.Prepare(mediaSource); } catch (Exception e) { Toast.MakeText(Context, Resource.String.noconnectionshort, ToastLength.Short).Show(); //LoginFuncs.ShowError(Context, new Exception(e.Message)); } }
private async void PlayEdit(Edit edit) { var videofile = edit.shortlink; shareedit = edit; Bootlegger.BootleggerClient.LogUserAction("Preview", new KeyValuePair <string, string>("editid", edit.id)); //AndHUD.Shared.Show(this, "Loading...", -1, MaskType.Black, null, null, true); //FindViewById<EditVideoView>(Resource.Id.videoplayer).ClearVideoSource(); //FindViewById<ImageButton>(Resource.Id.sharebtn).Visibility = ViewStates.Visible; //get video url: try { //set other fields: FindViewById <TextView>(Resource.Id.metadata).Text = edit.title; FindViewById <TextView>(Resource.Id.timemeta).Text = edit.createdAt.LocalizeFormat("ha E d MMM yy"); if (string.IsNullOrEmpty(edit.description)) { FindViewById <TextView>(Resource.Id.description).Visibility = ViewStates.Gone; } else { FindViewById <TextView>(Resource.Id.description).Text = edit.description; FindViewById <TextView>(Resource.Id.description).Visibility = ViewStates.Visible; } string url = await Bootlegger.BootleggerClient.GetEditUrl(edit); //DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory("BootleggerPreview"); ////var ok = new OkHttpClient(); //int cacheSize = 300 * 1024 * 1024; // 300 MiB //Square.OkHttp3.Cache cache = new Square.OkHttp3.Cache(FilesDir, cacheSize); var client = new OkHttpClient.Builder() //.Cache((Application as BootleggerApp).FilesCache) .Build(); OkHttpDataSourceFactory httpDataSourceFactory = new OkHttpDataSourceFactory(client, "BootleggerPreview"); var extractorsFactory = new DefaultExtractorsFactory(); mediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(url), httpDataSourceFactory, extractorsFactory, null, null); _player.Prepare(mediaSource); } catch (Exception e) { //adjust to what kind of exception it is: LoginFuncs.ShowToast(this, e); } finally { //AndHUD.Shared.Dismiss(); } }
private void InitComponent() { try { VideoSurfaceView = FindViewById <PlayerView>(Resource.Id.pv_fullscreen); BtFullScreen = FindViewById <ImageView>(Resource.Id.exo_fullscreen_icon); SetPlayer(); BtFullScreen.Click += BtFullScreen_Click; /////////////////////////// ProgressBar = FindViewById <ProgressBar>(Resource.Id.progress_bar); ProgressBar.Visibility = ViewStates.Visible; //===================== Exo Player ======================== // Uri Uri uri = Uri.Parse(VideoUrl); var videoSource = GetMediaSourceFromUrl(uri, uri?.Path?.Split('.').Last(), "normal"); VideoPlayer.Prepare(videoSource); VideoPlayer.PlayWhenReady = true; TabbedMainActivity.GetInstance()?.SetOnWakeLock(); } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public override async Task <bool> SetMediaPlayerDataSource() { var source = GetSource(CurrentFile.Url); _mediaPlayer.Prepare(source); return(await Task.FromResult(true)); }
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 void setCurrentPlayer(IPlayer currentPlayer) { if (this.currentPlayer == currentPlayer) { return; } // View management. if (currentPlayer == exoPlayer) { localPlayerView.Visibility = ViewStates.Visible; castControlView.Hide(); } else /* currentPlayer == castPlayer */ { localPlayerView.Visibility = ViewStates.Gone; castControlView.Show(); } // Player state management. long playbackPositionMs = C.TimeUnset; int windowIndex = C.IndexUnset; bool playWhenReady = false; if (this.currentPlayer != null) { int playbackState = this.currentPlayer.PlaybackState; if (playbackState != Player.StateEnded) { playbackPositionMs = this.currentPlayer.CurrentPosition; playWhenReady = this.currentPlayer.PlayWhenReady; windowIndex = this.currentPlayer.CurrentWindowIndex; if (windowIndex != currentItemIndex) { playbackPositionMs = C.TimeUnset; windowIndex = currentItemIndex; } } this.currentPlayer.Stop(true); } else { // This is the initial setup. No need to save any state. } this.currentPlayer = currentPlayer; // Media queue management. castMediaQueueCreationPending = currentPlayer == castPlayer; if (currentPlayer == exoPlayer) { exoPlayer.Prepare(concatenatingMediaSource); } // Playback transition. if (windowIndex != C.IndexUnset) { setCurrentItem(windowIndex, playbackPositionMs, playWhenReady); } }
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 OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == ExtendedVideoPlayer.IsAppearedProperty.PropertyName) { if (!(Element.IsAppeared) && _exoPlayer != null) { _exoPlayer.PlayWhenReady = false; } } else if (e.PropertyName == ExtendedVideoPlayer.SourceProperty.PropertyName) { string s = Element.Source; _exoPlayer.Stop(); IMediaSource videoSource = new ExtractorMediaSource( Android.Net.Uri.Parse(Element.Source), new CacheableDataSource(Context, 100 * 1024 * 1024, 5 * 1024 * 1024), new DefaultExtractorsFactory(), null, null); _exoPlayer.Prepare(videoSource); } }
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); }
//private IMediaSource CreateCacheMediaSource(IMediaSource videoSource, Android.Net.Uri videoUrL) //{ // try // { // var url = System.IO.Path.Combine(UserResponseURL.DirectoryURL, selectedMedia.VideoLocation); // var file = VideoDownloadAsyncController.GetDownloadedDiskVideoUri(url); // SimpleCache cache = new SimpleCache(this.CacheDir, new LeastRecentlyUsedCacheEvictor(1024 * 1024 * 10)); // CacheDataSourceFactory cacheDataSource = new CacheDataSourceFactory(cache, DefaultDataMediaFactory); // if (!string.IsNullOrEmpty(file)) // { // videoUrL = Android.Net.Uri.Parse(file); // videoSource = GetMediaSourceFromUrl(videoUrL, "normal"); // return videoSource; // } // else // { // return null; // } // } // catch (Exception exception) // { // Console.WriteLine(exception); // return null; // } //} public void Play() { try { progressBar.Visibility = ViewStates.Visible; if (Player != null) { Player.Stop(); Player.Release(); } InitializePlayer(); if (selectedMedia.VideoLocation.Contains(".mp4")) { imgAudio.Visibility = ViewStates.Gone; SimpleExoPlayerView.Visibility = ViewStates.Visible; SimpleExoPlayerView.ResizeMode = AspectRatioFrameLayout.ResizeModeZoom; SimpleExoPlayerView.Player = Player; SimpleExoPlayerView.UseController = false; swipListener.SwipeEvent -= SwipListener_SwipeEvent; swipListener.SwipeEvent += SwipListener_SwipeEvent; SimpleExoPlayerView.SetOnTouchListener(swipListener); } else { imgAudio.Visibility = ViewStates.Visible; SimpleExoPlayerView.Visibility = ViewStates.Gone; swipListener.SwipeEvent -= SwipListener_SwipeEvent; swipListener.SwipeEvent += SwipListener_SwipeEvent; imgAudio.SetOnTouchListener(swipListener); Glide.With(this).Load(System.IO.Path.Combine(UserResponseURL.DirectoryURL, selectedMedia.Thumbnail)).Into(imgAudio); } var url = Android.Net.Uri.Parse(System.IO.Path.Combine(UserResponseURL.DirectoryURL, selectedMedia.VideoLocation)); var VideoSource = GetMediaSourceFromUrl(url, "normal"); Player.Prepare(VideoSource); Player.AddListener(new LatestPlayerListener(this)); Player.PlayWhenReady = true; Glide.With(this).Load(UserResponseURL.DirectoryUserSettings + selectedMedia.Avatar).Into(imgProfile); txtUserName.Text = selectedMedia.Username; txtdays.Text = Helpers.DateTimeHelper.GetDateTimeString(selectedMedia.Timestamp); txtDescription.Text = selectedMedia.Description; txtLikeNumber.Text = selectedMedia.Likes; txtShareNumber.Text = selectedMedia.Shares; txtCommentNumber.Text = selectedMedia.Comments; if (selectedMedia.IsLiked == "1") // true { btnLike.Tag = "1"; btnLike.SetImageResource(Resource.Drawable.like_blue); } else { btnLike.Tag = "0"; btnLike.SetImageResource(Resource.Drawable.like_white); } } catch (System.Exception ex) { } }
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))); }
public void Play() { if (State == PlayerState.Idle) { TheExoPlayer.Prepare(_videoSource, false, false); // TheExoPlayer.Prepare(_videoSource); } TheExoPlayer.PlayWhenReady = true; }
public void StartPlaying(string url) { State = State.Loading; Uri uri = Uri.Parse(url); IDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(Application.Context, Application.Context.PackageName); IMediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).CreateMediaSource(uri); _exoPlayer.Prepare(mediaSource); }
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() { 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 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 }
internal void SetAudio(string v) { //set audio: if (v != null) { audioSource = new ExtractorMediaSource(Android.Net.Uri.Parse(v), httpDataSourceFactory, extractorsFactory, null, null); _audioPlayer.Prepare(audioSource); _audioPlayer.PlayWhenReady = false; } else { audioSource = null; _audioPlayer.Stop(); } }
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); } }
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; } }
public void OnCompleted(string id, IList<TrackTransformationInfo> trackTransformationInfos) { System.Diagnostics.Debug.WriteLine($"OnCompleted: {id}"); var uri = Uri.FromFile(_targetMedia.targetFile); /* await Share.RequestAsync(new ShareTextRequest { Uri = _targetMedia.targetFile.AbsolutePath, Title = "Share Created Video" }); */ var progressiveMediaSource = new Com.Google.Android.Exoplayer2.Source.ProgressiveMediaSource.Factory(new Com.Google.Android.Exoplayer2.Upstream.DefaultDataSourceFactory(this, "Exoplayer-local")); var mediaSource = progressiveMediaSource.CreateMediaSource(uri); _player.Prepare(mediaSource); }
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 ListAdapter_OnPreview(Music obj) { listAdapter.UpdatePlaying(obj); currentPreview = obj; _audioPlayer.PlayWhenReady = false; mediaSource = new ExtractorMediaSource(Android.Net.Uri.Parse(obj.url), httpDataSourceFactory, extractorsFactory, null, null); try { _audioPlayer.Prepare(mediaSource); _audioPlayer.PlayWhenReady = true; } catch (Exception e) { LoginFuncs.ShowError(Context.ApplicationContext, e); } Bootlegger.BootleggerClient.LogUserAction("MusicPreview", new KeyValuePair <string, string>("music", obj.url), new KeyValuePair <string, string>("eventid", Bootlegger.BootleggerClient.CurrentEvent.id)); }
private void InitializePlayback(StreamingUri itemToPlay) { if (mediaStreams == null) { mediaStreams = JsonConvert.DeserializeObject <List <StreamingUri> >(Intent.GetStringExtra("mediaStreams")) .Where(a => a.StreamingUrl.OriginalString.Contains(".mp4")).ToList(); } if (player is null) { mediaSourceFactory = new DefaultDataSourceFactory(this, Util.GetUserAgent(this, Application.PackageName)); trackSelectorFactory = new AdaptiveTrackSelection.Factory(); var renderersFactory = new DefaultRenderersFactory(this); player = ExoPlayerFactory.NewSimpleInstance(this, renderersFactory, new DefaultTrackSelector(trackSelectorFactory)); playerView = FindViewById <PlayerView>(Resource.Id.playerView); playerView.Player = player; playerView.RequestFocus(); playerView.SetControllerVisibilityListener(this); linksSpinner = FindViewById <AppCompatSpinner>(Resource.Id.linksSpinner); player.PlayWhenReady = true; playerView.ControllerShowTimeoutMs = 3000; if (mediaStreams != null && mediaStreams.Count > 0) { var titles = new List <string>() { }; mediaStreams.ForEach(a => titles.Add(a.StreamingQuality + " - MP4")); linksSpinner.Adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, titles); linksSpinner.ItemSelected += LinksSpinner_ItemSelected; linksSpinner.SetSelection(0); } } if (itemToPlay != null) { player.Prepare(CreateMediaSource(itemToPlay)); playerView.KeepScreenOn = true; } }
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 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); }
private void RunVideoWithAds(IMediaSource videoSource, bool showAds) { try { var isPro = ListUtils.MyChannelList.FirstOrDefault()?.IsPro ?? "0"; if (isPro == "0" && ListUtils.AdsVideoList.Count > 0 && Methods.CheckConnectivity() && showAds) { Random rand = new Random(); var playPos = rand.Next(ListUtils.AdsVideoList.Count - 1 + 1); DataAdsVideo = ListUtils.AdsVideoList[playPos]; var type = Methods.AttachmentFiles.Check_FileExtension(DataAdsVideo?.Media); if (type == "Video" && DataAdsVideo != null) { //AppSettings.ShowButtonSkip = DataAdsVideo var adVideoSource = GetMediaSourceFromUrl(Uri.Parse(DataAdsVideo.Media), "Ads"); if (adVideoSource != null) { ListUtils.AdsVideoList.Remove(DataAdsVideo); // Plays the first video, then the second video. ConcatenatingMediaSource concatenatedSource = new ConcatenatingMediaSource(adVideoSource, videoSource); SimpleExoPlayerView.Player = Player; Player.Prepare(concatenatedSource); Player.AddListener(PlayerListener); Player.PlayWhenReady = true; Player.AddVideoListener(this); ExoTopLayout.Visibility = ViewStates.Gone; ExoEventButton.Visibility = ViewStates.Invisible; BtnSkipIntro.Visibility = ViewStates.Visible; ExoTopAds.Visibility = ViewStates.Visible; BtnSkipIntro.Text = AppSettings.ShowButtonSkip.ToString(); BtnSkipIntro.Enabled = false; RunTimer(); } else { SimpleExoPlayerView.Player = Player; Player.Prepare(videoSource); Player.AddListener(PlayerListener); Player.AddVideoListener(this); Player.PlayWhenReady = true; ExoTopLayout.Visibility = ViewStates.Visible; ExoEventButton.Visibility = ViewStates.Visible; BtnSkipIntro.Visibility = ViewStates.Gone; ExoTopAds.Visibility = ViewStates.Gone; } } else { SimpleExoPlayerView.Player = Player; Player.Prepare(videoSource); Player.AddListener(PlayerListener); Player.PlayWhenReady = true; Player.AddVideoListener(this); ExoTopLayout.Visibility = ViewStates.Visible; ExoEventButton.Visibility = ViewStates.Visible; BtnSkipIntro.Visibility = ViewStates.Gone; ExoTopAds.Visibility = ViewStates.Gone; } } else { SimpleExoPlayerView.Player = Player; Player.Prepare(videoSource); Player.AddListener(PlayerListener); Player.AddVideoListener(this); Player.PlayWhenReady = true; ExoTopLayout.Visibility = ViewStates.Visible; ExoEventButton.Visibility = ViewStates.Visible; BtnSkipIntro.Visibility = ViewStates.Gone; ExoTopAds.Visibility = ViewStates.Gone; } bool haveResumePosition = ResumeWindow != C.IndexUnset; if (haveResumePosition) { Player.SeekTo(ResumeWindow, ResumePosition); } } catch (Exception e) { Console.WriteLine(e); } }
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 PlayVideo(bool isEndOfList, Holders.VideoAdapterViewHolder holderVideoPlayer = null, PostsObject item = null) { try { if (VideoPlayer == null) { SetPlayer(); } int targetPosition; if (!isEndOfList) { var startPosition = ((LinearLayoutManager)GetLayoutManager()).FindFirstVisibleItemPosition(); var endPosition = ((LinearLayoutManager)GetLayoutManager()).FindLastVisibleItemPosition(); if (endPosition - startPosition > 1) { endPosition = startPosition + 1; } if (startPosition < 0 || endPosition < 0) { return; } if (startPosition != endPosition) { var startPositionVideoHeight = GetVisibleVideoSurfaceHeight(startPosition); var endPositionVideoHeight = GetVisibleVideoSurfaceHeight(endPosition); targetPosition = startPositionVideoHeight > endPositionVideoHeight ? startPosition : endPosition; } else { targetPosition = startPosition; } } else { targetPosition = GetAdapter().ItemCount - 1; } if (targetPosition == PlayPosition) { return; } // set the position of the list-item that is to be played PlayPosition = targetPosition; if (VideoSurfaceView == null) { return; } VideoSurfaceView.Visibility = ViewStates.Invisible; RemoveVideoView(VideoSurfaceView); var currentPosition = targetPosition - ((LinearLayoutManager)GetLayoutManager()).FindFirstVisibleItemPosition(); var child = GetChildAt(currentPosition); if (child == null) { return; } dynamic holder; if (holderVideoPlayer != null) { holder = holderVideoPlayer; targetPosition = holderVideoPlayer.LayoutPosition; } else { Holders.VideoAdapterViewHolder holderChild = (Holders.VideoAdapterViewHolder)child.Tag; if (holderChild == null) { PlayPosition = -1; return; } else { targetPosition = holderChild.LayoutPosition; holder = holderChild; } } if (!(holder is Holders.VideoAdapterViewHolder holderVideo)) { return; } MediaContainerLayout = holderVideo.MediaContainerLayout; Thumbnail = holderVideo.VideoImage; ViewHolderParent = holderVideo.ItemView; PlayControl = holderVideo.PlayControl; if (!IsVideoViewAdded) { AddVideoView(); } holderVideo.VideoProgressBar.Visibility = ViewStates.Visible; VideoSurfaceView.Player = VideoPlayer; var controlView = VideoSurfaceView.FindViewById <PlayerControlView>(Resource.Id.exo_controller); Uri videoUrl = Uri.Parse(item != null ? item.MediaSet[0].File : NativeFeedAdapter.PixelNewsFeedList[targetPosition].MediaSet[0].File); //>> Old Code //===================== Exo Player ======================== var lis = new ExoPlayerRecyclerEvent(controlView, this, holderVideo); IMediaSource videoSource = GetMediaSourceFromUrl(videoUrl, "normal"); var dataSpec = new DataSpec(videoUrl); //0, 1000 * 1024, null if (Cache == null) { CacheVideosFiles(videoUrl); } //Cache = new SimpleCache(new Java.IO.File(MainContext.FilesDir, "media"), new NoOpCacheEvictor()); if (CacheDataSourceFactory == null) { CacheDataSourceFactory = new CacheDataSourceFactory(Cache, DefaultDataSourceFac); } var counters = new CacheUtil.CachingCounters(); CacheUtil.GetCached(dataSpec, Cache, counters); if (counters.ContentLength == counters.TotalCachedBytes()) { videoSource = new ExtractorMediaSource.Factory(CacheDataSourceFactory).CreateMediaSource(videoUrl); } else if (counters.TotalCachedBytes() == 0) { videoSource = new ExtractorMediaSource.Factory(CacheDataSourceFactory).CreateMediaSource(videoUrl); // not cached at all Task.Run(() => { try { var cacheDataSource = new CacheDataSource(Cache, CacheDataSourceFactory.CreateDataSource()); CacheUtil.Cache(dataSpec, Cache, cacheDataSource, counters, new AtomicBoolean()); double downloadPercentage = counters.TotalCachedBytes() * 100d / counters.ContentLength; Console.WriteLine(downloadPercentage); } catch (Exception e) { Console.WriteLine(e); } }); } else { // partially cached videoSource = new ExtractorMediaSource.Factory(CacheDataSourceFactory).CreateMediaSource(videoUrl); } lis.mFullScreenButton.SetOnClickListener(new NewClicker(lis.mFullScreenButton, videoUrl.ToString(), this)); VideoPlayer.Prepare(videoSource); VideoPlayer.AddListener(lis); VideoPlayer.PlayWhenReady = true; } catch (Exception e) { Console.WriteLine(e); } }
public void PlayVideo(string videoUrL, GetMoviesObject.Movie videoObject) { try { if (videoObject != null) { VideoData = videoObject; VideoViewerActivity.GetInstance()?.TabVideosAbout?.LoadVideo_Data(videoObject); TabbedMainActivity.GetInstance()?.SetOnWakeLock(); ReleaseVideo(); MFullScreenIcon.SetImageDrawable(ActivityContext.GetDrawable(Resource.Drawable.ic_action_ic_fullscreen_expand)); Uri videoUrl = Uri.Parse(!string.IsNullOrEmpty(videoUrL) ? videoUrL : VideoData.Source); AdaptiveTrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory(); var trackSelector = new DefaultTrackSelector(DefaultTrackSelector.Parameters.GetDefaults(ActivityContext), trackSelectionFactory); trackSelector.SetParameters(new DefaultTrackSelector.ParametersBuilder(ActivityContext)); Player = new SimpleExoPlayer.Builder(ActivityContext).Build(); // Produces DataSource instances through which media data is loaded. var defaultSource = GetMediaSourceFromUrl(videoUrl, videoUrl?.Path?.Split('.').Last(), "normal", IDrmSessionManager.DummyDrmSessionManager); VideoSource = null !; //Set Interactive Media Ads if (PlayerSettings.ShowInteractiveMediaAds) { VideoSource = CreateMediaSourceWithAds(defaultSource, PlayerSettings.ImAdsUri); } if (SimpleExoPlayerView == null) { Initialize(); } //Set Cache Media Load if (PlayerSettings.EnableOfflineMode) { VideoSource = VideoSource == null?CreateCacheMediaSource(defaultSource, videoUrl) : CreateCacheMediaSource(VideoSource, videoUrl); if (VideoSource != null) { SimpleExoPlayerView.Player = Player; Player.Prepare(VideoSource); //Player.AddListener(PlayerListener); Player.PlayWhenReady = true; bool haveResumePosition = ResumeWindow != C.IndexUnset; if (haveResumePosition) { Player.SeekTo(ResumeWindow, ResumePosition); } return; } } if (VideoSource == null) { if (!string.IsNullOrEmpty(videoUrL)) { if (videoUrL.Contains("youtube") || videoUrL.Contains("Youtube") || videoUrL.Contains("youtu")) { //Task.Factory.StartNew(async () => //{ // var newurl = await VideoInfoRetriever.GetEmbededVideo(VideoData.source); // videoSource = CreateDefaultMediaSource(Android.Net.Uri.Parse(newurl)); //}); } else { VideoSource = GetMediaSourceFromUrl(Uri.Parse(videoUrL), videoUrL?.Split('.').Last(), "normal", IDrmSessionManager.DummyDrmSessionManager); SimpleExoPlayerView.Player = Player; Player.Prepare(VideoSource); //Player.AddListener(PlayerListener); Player.PlayWhenReady = true; bool haveResumePosition = ResumeWindow != C.IndexUnset; if (haveResumePosition) { Player.SeekTo(ResumeWindow, ResumePosition); } } } } else { SimpleExoPlayerView.Player = Player; Player.Prepare(VideoSource); //Player.AddListener(PlayerListener); Player.PlayWhenReady = true; bool haveResumePosition = ResumeWindow != C.IndexUnset; if (haveResumePosition) { Player.SeekTo(ResumeWindow, ResumePosition); } } } } catch (Exception exception) { Methods.DisplayReportResultTrack(exception); } }
// Internal methods private void initializePlayer() { Intent intent = Intent; bool needNewPlayer = player == null; if (needNewPlayer) { var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(BANDWIDTH_METER); trackSelector = new DefaultTrackSelector(adaptiveTrackSelectionFactory); trackSelectionHelper = new TrackSelectionHelper(trackSelector, adaptiveTrackSelectionFactory); lastSeenTrackGroupArray = null; eventLogger = new EventLogger(trackSelector); var drmSchemeUuid = intent.HasExtra(DRM_SCHEME_UUID_EXTRA) ? UUID.FromString(intent.GetStringExtra(DRM_SCHEME_UUID_EXTRA)) : null; IDrmSessionManager drmSessionManager = null; if (drmSchemeUuid != null) { var drmLicenseUrl = intent.GetStringExtra(DRM_LICENSE_URL); var keyRequestPropertiesArray = intent.GetStringArrayExtra(DRM_KEY_REQUEST_PROPERTIES); int errorStringId = Resource.String.error_drm_unknown; if (Util.Util.SdkInt < 18) { errorStringId = Resource.String.error_drm_not_supported; } else { try { drmSessionManager = BuildDrmSessionManagerV18(drmSchemeUuid, drmLicenseUrl, keyRequestPropertiesArray); } catch (UnsupportedDrmException e) { errorStringId = e.Reason == UnsupportedDrmException.ReasonUnsupportedScheme ? Resource.String.error_drm_unsupported_scheme : Resource.String.error_drm_unknown; } } if (drmSessionManager == null) { ShowToast(errorStringId); return; } } var preferExtensionDecoders = intent.GetBooleanExtra(PREFER_EXTENSION_DECODERS, false); var extensionRendererMode = ((DemoApplication)Application).UseExtensionRenderers() ? (preferExtensionDecoders ? DefaultRenderersFactory.ExtensionRendererModePrefer : DefaultRenderersFactory.ExtensionRendererModeOn) : DefaultRenderersFactory.ExtensionRendererModeOff; var renderersFactory = new DefaultRenderersFactory(this, drmSessionManager, extensionRendererMode); player = ExoPlayerFactory.NewSimpleInstance(renderersFactory, trackSelector); player.AddListener(this); player.AddListener(eventLogger); player.SetAudioDebugListener(eventLogger); player.SetVideoDebugListener(eventLogger); player.SetMetadataOutput(eventLogger); simpleExoPlayerView.Player = player; player.PlayWhenReady = shouldAutoPlay; debugViewHelper = new DebugTextViewHelper(player, debugTextView); debugViewHelper.Start(); } var action = intent.Action; Uri[] uris; string[] extensions; if (ACTION_VIEW.Equals(action)) { uris = new Uri[] { intent.Data }; extensions = new string[] { intent.GetStringExtra(EXTENSION_EXTRA) }; } else if (ACTION_VIEW_LIST.Equals(action)) { var uriStrings = intent.GetStringArrayExtra(URI_LIST_EXTRA); uris = new Uri[uriStrings.Length]; for (int i = 0; i < uriStrings.Length; i++) { uris[i] = Uri.Parse(uriStrings[i]); } extensions = intent.GetStringArrayExtra(EXTENSION_LIST_EXTRA); if (extensions == null) { extensions = new string[uriStrings.Length]; } } else { ShowToast(GetString(Resource.String.unexpected_intent_action, action)); return; } if (Util.Util.MaybeRequestReadExternalStoragePermission(this, uris)) { // The player will be reinitialized if the permission is granted. return; } var mediaSources = new IMediaSource[uris.Length]; for (var i = 0; i < uris.Length; i++) { mediaSources[i] = BuildMediaSource(uris[i], extensions[i]); } var mediaSource = mediaSources.Length == 1 ? mediaSources[0] : new ConcatenatingMediaSource(mediaSources); var adTagUriString = intent.GetStringExtra(AD_TAG_URI_EXTRA); if (adTagUriString != null) { Uri adTagUri = Uri.Parse(adTagUriString); if (!adTagUri.Equals(loadedAdTagUri)) { ReleaseAdsLoader(); loadedAdTagUri = adTagUri; } try { mediaSource = CreateAdsMediaSource(mediaSource, Uri.Parse(adTagUriString)); } catch (System.Exception) { ShowToast(Resource.String.ima_not_loaded); } } else { ReleaseAdsLoader(); } bool haveResumePosition = resumeWindow != C.IndexUnset; if (haveResumePosition) { player.SeekTo(resumeWindow, resumePosition); } player.Prepare(mediaSource, !haveResumePosition, false); inErrorState = false; UpdateButtonVisibilities(); }