簡體   English   中英

ExoPlayer.STATE_ENDED 后如何在 Exoplayer 上重新啟動視頻

[英]How to restart video on Exoplayer after ExoPlayer.STATE_ENDED

我使用ExoplayerDemoPlayer的基礎。 調度ExoPlayer.STATE_ENDED之后,我想在某些用戶操作上從頭開始重新啟動/重播視頻。

我試過使用seekTo(0)mPlayer.setPlayWhenReady(true); 之后,但它根本沒有做任何事情。

我已經將庫更新到 ExoPlayer r1.4.2並且它完成了工作......

    mPlayer.seekTo(0);
    mPlayer.setPlayWhenReady(true); // replay from start

// 重啟后暫停視頻

    mPlayer.seekTo(0);
    mPlayer.setPlayWhenReady(false);

可以使用 LoopingMediaSource 無縫循環播放視頻。 以下示例無限循環播放音頻/視頻。 創建 LoopingMediaSource 時也可以指定有限循環計數。

MediaSource source = new ExtractorMediaSource(audioUri, ...);
// Loops the audio indefinitely.
LoopingMediaSource loopingSource = new LoopingMediaSource(source);

或者添加一個監聽器

playerExo.addListener(new ExoPlayer.Listener() {

            @Override
            public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {

                switch(playbackState) {
                    case ExoPlayer.STATE_BUFFERING:
                        break;
                    case ExoPlayer.STATE_ENDED:
                        playerExo.seekTo(0);
                        break;
                    case ExoPlayer.STATE_IDLE:
                        break;
                    case ExoPlayer.STATE_PREPARING:
                        break;
                    case ExoPlayer.STATE_READY:
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onPlayWhenReadyCommitted() {

            }

            @Override
            public void onPlayerError(ExoPlaybackException error) {

            }
        });
        playerExo.seekTo(0);
        playerExo.setPlayWhenReady(true);//replay from start



/*  If you want to Pause audio/video and restart
 mPlayer.seekTo(0);
 mPlayer.setPlayWhenReady(false);*/

您可以檢查 Exoplayer 最新版本是否是最新的:

Exoplayer 發布

這段代碼對我有用

 @OnClick(R.id.image_button_play)
public void play(){
    Log.d(TAG, "play: clicked");
    //If video has finished then set Exoplayer to 0
    if (simpleExoPlayer.getPlaybackState() == Player.STATE_ENDED){
        simpleExoPlayer.seekTo(0);
    }
    simpleExoPlayer.setPlayWhenReady(true);
    playButton.setVisibility(View.INVISIBLE);
}

上面的代碼是從exo原始libirary復制的,它也調用了seekTo()方法 在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM