示例#1
0
 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 !);
     }
 }
        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 !);
                }
            }
        }
        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);
            }
        }