其他分享
首页 > 其他分享> > android-VideoView和MediaPlayer seekTo始终从头开始

android-VideoView和MediaPlayer seekTo始终从头开始

作者:互联网

寻找在VideoView中播放的视频并将其恢复时遇到一些问题.

这是我的代码的一部分:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
        mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
            @Override
            public void onSeekComplete(MediaPlayer mp) {
                Log.d("V", "onSeekComplete1 " + videoView.getCurrentPosition());
                videoView.start();
                Log.d("V", "onSeekComplete1 " + videoView.getCurrentPosition());
            }
        });
    }
});
videoView.setVideoURI('some local uri');

在某些时候,我正在暂停使用以下视频:
videoView.pause();

单击按钮后,我正在寻找特定时间的视频,例如. 10秒(10000毫秒).

@OnClick(R2.id.ivMove)
void clickMove() {
   videoView.seekTo(10000);
}

之后,我在日志中看到:

onSeekComplete1 10000
onSeekComplete2 0

因此,在调用videoView.start()之后,它从头开始播放视频!

但是,当我在不寻求视频的情况下调用start()时(例如,一个按钮调用了pause(),第二个按钮调用了start(),则视频正在正确播放-从暂停的那一刻开始,而不是从开始.

你能告诉我我在做什么错吗?

解决方法:

问题是由MediaPlayer引起的-它正在寻求最接近视频的关键帧,事实证明我的测试视频每30秒就有一个关键帧.

我更改为ExoPlayer https://github.com/google/ExoPlayer-它可以寻求准确的时间.

标签:android-mediaplayer,android-videoview,android
来源: https://codeday.me/bug/20191111/2018304.html