播放视频时如何跳过 android 中丢失的块?

How to skip missing chunks in android when playing video?

我正在编写一个 android 应用程序,它接受 HLS 并通过 VideoView 显示。但有时流中缺少块,我的播放器崩溃了。这是我尝试修复它的方法。

player.setOnErrorListener(playerErrorHandler);

private class PlayerErrorHandler implements MediaPlayer.OnErrorListener {

    private boolean handledError = false;

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        if (!handledError) {
            if (!isOnline()) {
                finish();
            }
            //if we're here then we have a missing chunk
            int currentPosition = mp.getCurrentPosition();
            // check if seekForward time is lesser than song duration
            mp.seekTo(currentPosition + 10);

        } else {
            handledError = false;
        }
        return true;
    }
}



private boolean isOnline() {
    ConnectivityManager cm =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

因此,如果我的连接没有任何问题,我只是检查错误,如果一切正常,这意味着我的流中缺少块。但问题是,我的转发不起作用,并且不断抛出错误。我如何转发 10 秒?或者更好,有没有办法告诉媒体播放器自动跳过丢失的块并继续播放?

通过反复试验找到了正确的方法。这是我如何跳过丢失的块

更改了这些行

 int currentPosition = mp.getCurrentPosition();
 mp.seekTo(currentPosition + 10);

这些

 int currentPosition = mp.getCurrentPosition();

 player.setVideoPath(streamUrl);
 player.seekTo(currentPosition + 5000);
 player.start();