@Override protected void doActionImpl( SimpleExoPlayer player, DefaultTrackSelector trackSelector, Surface surface) { player.prepare(mediaSource, resetPosition, resetState); }
@Override protected void doActionImpl( SimpleExoPlayer player, DefaultTrackSelector trackSelector, Surface surface) { player.setPlayWhenReady(playWhenReady); }
@Override public void stop() throws IllegalStateException { if (mInternalPlayer == null) return; mInternalPlayer.release(); }
public void reset() { if (player != null) { contentPosition = player.getContentPosition(); player.release(); player = null; } }
@Override public void retry() { verifyApplicationThread(); if (mediaSource != null && (getPlaybackError() != null || getPlaybackState() == Player.STATE_IDLE)) { prepare(mediaSource, /* resetPosition= */ false, /* resetState= */ false); } }
public boolean isPlaying() { if (simpleExoPlayer == null) return false; final int state = simpleExoPlayer.getPlaybackState(); return (state == Player.STATE_READY || state == Player.STATE_BUFFERING) && simpleExoPlayer.getPlayWhenReady(); }
new TestSimpleExoPlayer( context, renderersFactory, trackSelector, loadControl, bandwidthMeter, clock); player.addListener(ExoPlayerTestRunner.this); if (eventListener != null) { player.addListener(eventListener); player.addAnalyticsListener(analyticsListener); player.setPlayWhenReady(true); if (actionSchedule != null) { actionSchedule.start(player, trackSelector, null, handler, ExoPlayerTestRunner.this); player.prepare(mediaSource); } catch (Exception e) { handleException(e);
@Override public void run() { mTrackSelector = new DefaultTrackSelector(); mEventLogger = new EventLogger(mTrackSelector); boolean preferExtensionDecoders = true; boolean useExtensionRenderers = true;//是否开启扩展 @DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode = useExtensionRenderers ? (preferExtensionDecoders ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON) : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF; rendererFactory = new DefaultRenderersFactory(mAppContext, extensionRendererMode); DefaultLoadControl loadControl = new DefaultLoadControl(); mInternalPlayer = ExoPlayerFactory.newSimpleInstance(mAppContext, rendererFactory, mTrackSelector, loadControl, null, Looper.getMainLooper()); mInternalPlayer.addListener(IjkExo2MediaPlayer.this); mInternalPlayer.addAnalyticsListener(IjkExo2MediaPlayer.this); mInternalPlayer.addListener(mEventLogger); if (mSpeedPlaybackParameters != null) { mInternalPlayer.setPlaybackParameters(mSpeedPlaybackParameters); } if (mSurface != null) mInternalPlayer.setVideoSurface(mSurface); mInternalPlayer.prepare(mMediaSource); mInternalPlayer.setPlayWhenReady(false); } }
@Override public final void onStart(HostActivity host, Surface surface) { this.surface = surface; // Build the player. trackSelector = buildTrackSelector(host); String userAgent = "ExoPlayerPlaybackTests"; DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = buildDrmSessionManager(userAgent); player = buildExoPlayer(host, surface, trackSelector, drmSessionManager); player.prepare(buildSource(host, Util.getUserAgent(host, userAgent))); player.addAnalyticsListener(this); player.addAnalyticsListener(new EventLogger(trackSelector, tag)); if (analyticsListener != null) { player.addAnalyticsListener(analyticsListener); } player.setPlayWhenReady(true); actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null); // Schedule any pending actions. if (pendingSchedule != null) { pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null); pendingSchedule = null; } }
public void init(Context context, PlayerView playerView) { // Create a default track selector. TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(); TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); // Create a player instance. player = ExoPlayerFactory.newSimpleInstance(context, trackSelector); // Bind the player to the view. playerView.setPlayer(player); // This is the MediaSource representing the content media (i.e. not the ad). String contentUrl = context.getString(R.string.content_url); MediaSource contentMediaSource = buildMediaSource(Uri.parse(contentUrl)); // Compose the content media source into a new AdsMediaSource with both ads and content. MediaSource mediaSourceWithAds = new AdsMediaSource( contentMediaSource, /* adMediaSourceFactory= */ this, adsLoader, playerView.getOverlayFrameLayout()); // Prepare the player with the source. player.seekTo(contentPosition); player.prepare(mediaSourceWithAds); player.setPlayWhenReady(true); }
@Override protected void doActionAndScheduleNextImpl( final SimpleExoPlayer player, final DefaultTrackSelector trackSelector, final Surface surface, final HandlerWrapper handler, final ActionNode nextAction) { if (nextAction == null) { return; } player.addListener( new Player.EventListener() { @Override public void onSeekProcessed() { player.removeListener(this); nextAction.schedule(player, trackSelector, surface, handler); } }); }
@Override public void onPlayerError(ExoPlaybackException error) { Log.v(TAG, "Listener-onPlayerError..."); player.stop(); player.prepare(loopingSource); player.setPlayWhenReady(true); }
public boolean isCurrentWindowValid() { return simpleExoPlayer != null && simpleExoPlayer.getDuration() >= 0 && simpleExoPlayer.getCurrentPosition() >= 0; }
public void initPlayer(final boolean playOnReady) { if (DEBUG) Log.d(TAG, "initPlayer() called with: context = [" + context + "]"); simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(renderFactory, trackSelector, loadControl); simpleExoPlayer.addListener(this); simpleExoPlayer.setPlayWhenReady(playOnReady); simpleExoPlayer.setSeekParameters(PlayerHelper.getSeekParameters(context)); audioReactor = new AudioReactor(context, simpleExoPlayer); mediaSessionManager = new MediaSessionManager(context, simpleExoPlayer, new BasePlayerMediaSession(this)); registerBroadcastReceiver(); }
/** * 上一集 */ public void previous() { if (mInternalPlayer == null) { return; } Timeline timeline = mInternalPlayer.getCurrentTimeline(); if (timeline.isEmpty()) { return; } int windowIndex = mInternalPlayer.getCurrentWindowIndex(); timeline.getWindow(windowIndex, window); int previousWindowIndex = mInternalPlayer.getPreviousWindowIndex(); if (previousWindowIndex != C.INDEX_UNSET && (mInternalPlayer.getCurrentPosition() <= MAX_POSITION_FOR_SEEK_TO_PREVIOUS || (window.isDynamic && !window.isSeekable))) { mInternalPlayer.seekTo(previousWindowIndex, C.TIME_UNSET); } else { mInternalPlayer.seekTo(0); } }
@Override protected void onStop() { super.onStop(); if (player != null) { playerPosition = player.getCurrentPosition(); player.stop(); player.release(); player = null; } }
private boolean stopTest() { if (player == null) { return false; } actionHandler.removeCallbacksAndMessages(null); sourceDurationMs = player.getDuration(); player.release(); player = null; // We post opening of the finished condition so that any events posted to the main thread as a // result of player.release() are guaranteed to be handled before the test returns. actionHandler.post(testFinished::open); return true; }
public void destroyPlayer() { if (DEBUG) Log.d(TAG, "destroyPlayer() called"); if (simpleExoPlayer != null) { simpleExoPlayer.removeListener(this); simpleExoPlayer.stop(); simpleExoPlayer.release(); } if (isProgressLoopRunning()) stopProgressLoop(); if (playQueue != null) playQueue.dispose(); if (audioReactor != null) audioReactor.dispose(); if (playbackManager != null) playbackManager.dispose(); if (mediaSessionManager != null) mediaSessionManager.dispose(); if (playQueueAdapter != null) { playQueueAdapter.unsetSelectedListener(); playQueueAdapter.dispose(); } }
public void triggerProgressUpdate() { if (simpleExoPlayer == null) return; onUpdateProgress( Math.max((int) simpleExoPlayer.getCurrentPosition(), 0), (int) simpleExoPlayer.getDuration(), simpleExoPlayer.getBufferedPercentage() ); }