private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, null); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, eventLogger); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, eventLogger); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
private MediaSource buildMediaSource(Context context, Uri uri) { int type = getUrlType(uri.toString()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, new DefaultDataSourceFactory(context, null, new DefaultHttpDataSourceFactory(USER_AGENT, null)), new DefaultSsChunkSource.Factory(new DefaultDataSourceFactory(context, BANDWIDTH_METER, new DefaultHttpDataSourceFactory(USER_AGENT, BANDWIDTH_METER))), mainThreadHandler, null); case C.TYPE_DASH: return new DashMediaSource(uri, new DefaultDataSourceFactory(context, null, new DefaultHttpDataSourceFactory(USER_AGENT, null)), new DefaultDashChunkSource.Factory(new DefaultDataSourceFactory(context, BANDWIDTH_METER, new DefaultHttpDataSourceFactory(USER_AGENT, BANDWIDTH_METER))), mainThreadHandler, null); case C.TYPE_HLS: return new HlsMediaSource(uri, new DefaultDataSourceFactory(context, BANDWIDTH_METER, new DefaultHttpDataSourceFactory(USER_AGENT, BANDWIDTH_METER)), mainThreadHandler, null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, new DefaultDataSourceFactory(context, BANDWIDTH_METER, new DefaultHttpDataSourceFactory(USER_AGENT, BANDWIDTH_METER)), new DefaultExtractorsFactory(), mainThreadHandler, null); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
private MediaSource buildMediaSource(Uri uri, String overrideExtension) { DataSource.Factory mediaDataSourceFactory = buildDataSourceFactory(true); int type = TextUtils.isEmpty(overrideExtension) ? Util.inferContentType(uri) : Util.inferContentType("." + overrideExtension); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, null); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
public MediaSource getMediaSource(boolean preview) { switch (streamType) { case C.TYPE_SS: return new SsMediaSource(uri, new DefaultDataSourceFactory(context, null, getHttpDataSourceFactory(preview)), new DefaultSsChunkSource.Factory(getDataSourceFactory(preview)), mainHandler, null); case C.TYPE_DASH: return new DashMediaSource(uri, new DefaultDataSourceFactory(context, null, getHttpDataSourceFactory(preview)), new DefaultDashChunkSource.Factory(getDataSourceFactory(preview)), mainHandler, null); case C.TYPE_HLS: return new HlsMediaSource(uri, getDataSourceFactory(preview), mainHandler, null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, getDataSourceFactory(preview), new DefaultExtractorsFactory(), mainHandler, null); default: { throw new IllegalStateException("Unsupported type: " + streamType); } } }
protected MediaSource newMediaSource(Context context, String url, int type, Handler handler) { boolean hls = false; boolean localFile = url.startsWith("file://"); if (!localFile) { try { hls = type == MediaId.TYPE_VIDEO || Uri.parse(url).getPath().endsWith(".m3u8"); } catch (Exception ignore) { } } // expecting MP3 here ... otherwise HLS if ((localFile || type == MediaId.TYPE_AUDIO) && !hls) { return new ExtractorMediaSource(Uri.parse(url), buildDataSourceFactory(context, true, !localFile), new DefaultExtractorsFactory(), handler, this); } else { return new HlsMediaSource(Uri.parse(url), buildDataSourceFactory(context, true, true), handler, this); } }
private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mMediaDataSourceFactory), mMainHandler, mEventLogger); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mMediaDataSourceFactory), mMainHandler, mEventLogger); case C.TYPE_HLS: return new HlsMediaSource(uri, mMediaDataSourceFactory, mMainHandler, mEventLogger); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mMediaDataSourceFactory, new DefaultExtractorsFactory(), mMainHandler, mEventLogger); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, new DefaultDataSourceFactory(context, userAgent), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_DASH: return new DashMediaSource(uri, new DefaultDataSourceFactory(context, userAgent), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, eventLogger); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, eventLogger); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
private MediaSource buildMediaSource(Uri uri) { int type = Util.inferContentType(uri.getLastPathSegment()); switch (type) { case C.TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), new Handler(), null); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), new Handler(), null); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, new Handler(), null); case C.TYPE_OTHER: return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), new Handler(), null); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
@Override public MediaSource createMediaSource( Uri uri, @Nullable Handler handler, @Nullable MediaSourceEventListener listener) { @ContentType int type = Util.inferContentType(uri); switch (type) { case C.TYPE_DASH: return new DashMediaSource.Factory( new DefaultDashChunkSource.Factory(mediaDataSourceFactory), manifestDataSourceFactory) .createMediaSource(uri, handler, listener); case C.TYPE_HLS: return new HlsMediaSource.Factory(mediaDataSourceFactory) .createMediaSource(uri, handler, listener); case C.TYPE_OTHER: return new ExtractorMediaSource.Factory(mediaDataSourceFactory) .createMediaSource(uri, handler, listener); case C.TYPE_SS: default: throw new IllegalStateException("Unsupported type: " + type); } }
@Override public MediaSource initMediaSource(Uri uri) { int streamType = VideoPlayUtils.inferContentType(uri); switch (streamType) { case C.TYPE_SS: return new SsMediaSource.Factory(new DefaultSsChunkSource.Factory(getDataSource()), new DefaultDataSourceFactory(context, null, getDataSource())) .setMinLoadableRetryCount(5) .createMediaSource(uri,mainHandler,sourceEventListener); case C.TYPE_DASH: return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(getDataSource()) ,new DefaultDataSourceFactory(context, null, getDataSource())) .setMinLoadableRetryCount(5) .createMediaSource(uri, mainHandler, sourceEventListener); case C.TYPE_OTHER: return new ExtractorMediaSource.Factory( getDataSource()) .setExtractorsFactory( new DefaultExtractorsFactory()) .setMinLoadableRetryCount(5) .setCustomCacheKey(uri.getPath()) .createMediaSource(uri,mainHandler,null); case C.TYPE_HLS: return new HlsMediaSource.Factory(new DefaultHlsDataSourceFactory( getDataSource())) .setMinLoadableRetryCount(5) .createMediaSource(uri, mainHandler, sourceEventListener); default: throw new IllegalStateException(":Unsupported type: " + streamType); } }
private MediaSource buildMediaSource(Uri uri) { return new HlsMediaSource( uri, dataSourceFactory, mainHandler, this ); }
private void play() { Timber.d("play: %s", currentChannel.getName()); isPlaying = true; progressView.setVisibility(View.VISIBLE); Uri videoUri = Uri.parse(currentChannel.getStreamUrl()); MediaSource videoSource = new HlsMediaSource(videoUri, dataSourceFactory, playHandler, videoErrorHandler); player.prepare(videoSource); player.setPlayWhenReady(true); }
private MediaSource getMediaSource(boolean preview) { Uri contentUri = Uri.parse(mDataSource); int contentType = inferContentType(mDataSource); switch (contentType) { case C.TYPE_SS: return new SsMediaSource(contentUri, new DefaultDataSourceFactory(mAppContext, null, getHttpDataSourceFactory(preview)), new DefaultSsChunkSource.Factory(getDataSourceFactory(preview)), mainHandler, null); case C.TYPE_DASH: return new DashMediaSource(contentUri, new DefaultDataSourceFactory(mAppContext, null, getHttpDataSourceFactory(preview)), new DefaultDashChunkSource.Factory(getDataSourceFactory(preview)), mainHandler, null); case C.TYPE_HLS: return new HlsMediaSource(contentUri, getDataSourceFactory(preview), mainHandler, null); case TYPE_RTMP: RtmpDataSourceFactory rtmpDataSourceFactory = new RtmpDataSourceFactory(null); return new ExtractorMediaSource(contentUri, rtmpDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, null); case C.TYPE_OTHER: default: return new ExtractorMediaSource(contentUri, getDataSourceFactory(preview), new DefaultExtractorsFactory(), mainHandler, null); } }
public MediaSource create(ContentType contentType, Uri uri, ExtractorMediaSource.EventListener eventListener, AdaptiveMediaSourceEventListener mediaSourceEventListener) { switch (contentType) { case HLS: return new HlsMediaSource( uri, mediaDataSourceFactory, handler, mediaSourceEventListener ); case H264: DefaultExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); return new ExtractorMediaSource( uri, mediaDataSourceFactory, extractorsFactory, handler, eventListener ); case DASH: DefaultDashChunkSource.Factory chunkSourceFactory = new DefaultDashChunkSource.Factory(mediaDataSourceFactory); return new DashMediaSource( uri, mediaDataSourceFactory, chunkSourceFactory, handler, mediaSourceEventListener ); default: throw new UnsupportedOperationException("Content type: " + contentType + " is not supported."); } }
private MediaSource buildMediaSource(Uri uri, String overrideExtension) { int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : uri.getLastPathSegment()); switch (type) { case TYPE_SS: return new SsMediaSource(uri, buildDataSourceFactory(false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_DASH: return new DashMediaSource(uri, buildDataSourceFactory(false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger); case C.TYPE_HLS: return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, eventLogger); case C.TYPE_OTHER: MediaSource mediaSource = new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, eventLogger); if (mSubtitleUri != null) { Log.d(TAG, "====加载字幕====buildMediaSource: "); return TextSubtitle(mSubtitleUri, mediaSource); } else { return mediaSource; } default: { throw new IllegalStateException("Unsupported type: " + type); } } }
@NonNull @Override public MediaSource build(@NonNull Context context, @NonNull Uri uri, @NonNull String userAgent, @NonNull Handler handler, @Nullable TransferListener<? super DataSource> transferListener) { DataSource.Factory dataSourceFactory = buildDataSourceFactory(context, userAgent, transferListener); return new HlsMediaSource(uri, dataSourceFactory, handler, null); }
private MediaSource buildMediaSource( Uri uri, String overrideExtension, @Nullable Handler handler, @Nullable MediaSourceEventListener listener) { @ContentType int type = TextUtils.isEmpty(overrideExtension) ? Util.inferContentType(uri) : Util.inferContentType("." + overrideExtension); switch (type) { case C.TYPE_DASH: return new DashMediaSource.Factory( new DefaultDashChunkSource.Factory(mediaDataSourceFactory), buildDataSourceFactory(false)) .createMediaSource(uri, handler, listener); case C.TYPE_SS: return new SsMediaSource.Factory( new DefaultSsChunkSource.Factory(mediaDataSourceFactory), buildDataSourceFactory(false)) .createMediaSource(uri, handler, listener); case C.TYPE_HLS: return new HlsMediaSource.Factory(mediaDataSourceFactory) .createMediaSource(uri, handler, listener); case C.TYPE_OTHER: return new ExtractorMediaSource.Factory(mediaDataSourceFactory) .createMediaSource(uri, handler, listener); default: { throw new IllegalStateException("Unsupported type: " + type); } } }
public static MediaSource getMediaSourceFor(Context context, Uri mediaUri, String overrideExtension) { // Measures bandwidth during playback. Can be null if not required. DataSource.Factory mediaDataSourceFactory = buildDataSourceFactory(context, true); int type = Util.inferContentType(!TextUtils.isEmpty(overrideExtension) ? "." + overrideExtension : mediaUri.getLastPathSegment()); Handler mainHandler = new Handler(); switch (type) { case C.TYPE_SS: return new SsMediaSource(mediaUri, buildDataSourceFactory(context, false), new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_DASH: return new DashMediaSource(mediaUri, buildDataSourceFactory(context, false), new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, null); case C.TYPE_HLS: return new HlsMediaSource(mediaUri, mediaDataSourceFactory, mainHandler, null); case C.TYPE_OTHER: return new ExtractorMediaSource(mediaUri, mediaDataSourceFactory, new DefaultExtractorsFactory(), mainHandler, null); default: { throw new NotMediaException("Unsupported type: " + type); } } }
/** * Creates a HLS (Http live streaming) source. */ public Object CreateHLSSource (String Uri) { return new HlsMediaSource(android.net.Uri.parse(Uri), createDefaultDataFactory(), null, null); }
private void preparePlayer() { if (player == null){ DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null; @SimpleExoPlayer.ExtensionRendererMode int extensionRendererMode = ((EvercamPlayApplication) getApplication()).useExtensionRenderers() ? (false ? SimpleExoPlayer.EXTENSION_RENDERER_MODE_PREFER : SimpleExoPlayer.EXTENSION_RENDERER_MODE_ON) : SimpleExoPlayer.EXTENSION_RENDERER_MODE_OFF; TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(BANDWIDTH_METER); trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl(), drmSessionManager, extensionRendererMode); player.addListener(this); eventLogger = new EventLogger(trackSelector); eventLogger.addListener(this); player.addListener(eventLogger); // player.setAudioDebugListener(eventLogger); player.setVideoDebugListener(eventLogger); player.setMetadataOutput(eventLogger); Uri hlsUrl = Uri.parse(evercamCamera.getHlsUrl()); MediaSource mediaSource = new HlsMediaSource(hlsUrl, mediaDataSourceFactory, mainHandler, eventLogger); boolean haveResumePosition = resumeWindow != C.INDEX_UNSET; if (haveResumePosition) { player.seekTo(resumeWindow, resumePosition); } player.prepare(mediaSource, !haveResumePosition, false); player.setPlayWhenReady(true); player.setVideoSurface(surface); }else{ releasePlayer(); preparePlayer(); } /*DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null; @SimpleExoPlayer.ExtensionRendererMode int extensionRendererMode = ((EvercamPlayApplication) getApplication()).useExtensionRenderers() ? (false ? SimpleExoPlayer.EXTENSION_RENDERER_MODE_PREFER : SimpleExoPlayer.EXTENSION_RENDERER_MODE_ON) : SimpleExoPlayer.EXTENSION_RENDERER_MODE_OFF; TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(BANDWIDTH_METER); trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, new DefaultLoadControl(), drmSessionManager, extensionRendererMode); player.addListener(this); eventLogger = new EventLogger(trackSelector); eventLogger.addListener(this); player.addListener(eventLogger); // player.setAudioDebugListener(eventLogger); player.setVideoDebugListener(eventLogger); player.setMetadataOutput(eventLogger); Uri hlsUrl = Uri.parse(evercamCamera.getHlsUrl()); MediaSource mediaSource = new HlsMediaSource(hlsUrl, mediaDataSourceFactory, mainHandler, eventLogger); player.prepare(mediaSource); player.setPlayWhenReady(true); player.setVideoSurface(surface);*/ }
private void initHLSPlayer(String dashUrl) { MediaSource sampleSource = new HlsMediaSource(Uri.parse(dashUrl), dataSourceFactory, handler, this); initExoPlayer(sampleSource); }