[英]Exoplayer2.x: Player.STATE_ENDED fires twice when a video ends ,how to implement exoplayer in android?
[英]How to restart video on Exoplayer after ExoPlayer.STATE_ENDED
我使用Exoplayer與DemoPlayer的基礎。 在調度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 最新版本是否是最新的:
這段代碼對我有用
@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.