22

DemoPlayerをベースにExoplayerを使用しています。ExoPlayer.STATE_ENDEDがディスパッチされた、何らかのユーザー アクションでビデオを最初から再開/再生したい。

seekTo(0)and afterを使用しようとしましmPlayer.setPlayWhenReady(true);たが、まったく何もしませんでした。

4

3 に答える 3

34

ライブラリをExoPlayerに更新しましたが、うまくいきr1.4.2ます...

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

// 再起動後に動画を一時停止

    mPlayer.seekTo(0);
    mPlayer.setPlayWhenReady(false);
于 2015-08-14T12:32:09.863 に答える
3

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 の最新リリースが最新であることを確認できます。

エクソプレイヤーのリリース

于 2017-06-20T13:27:18.683 に答える
2

このコードは私のために働く

 @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);
}
于 2020-04-02T22:50:15.783 に答える