android - Exoplayer(2.0.0) 在播放实时 HLS 视频时给出 BehindLiveWindowException

标签 android http-live-streaming exoplayer exoplayer2.x

我在播放实时视频 (HLS) 一段时间后收到此异常,对于录制的视频,它工作正常。

    com.google.android.exoplayer2.source.BehindLiveWindowException
    at com.google.android.exoplayer2.source.hls.HlsChunkSource.getNextChunk(HlsChunkSource.java:255)
    at com.google.android.exoplayer2.source.hls.HlsSampleStreamWrapper.continueLoading(HlsSampleStreamWrapper.java:313)
    at com.google.android.exoplayer2.source.CompositeSequenceableLoader.continueLoading(CompositeSequenceableLoader.java:55)
    at com.google.android.exoplayer2.source.hls.HlsMediaPeriod.continueLoading(HlsMediaPeriod.java:198)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.maybeContinueLoading(ExoPlayerImplInternal.java:1080)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleContinueLoadingRequested(ExoPlayerImplInternal.java:1067)
    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:289)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:135)
    at android.os.HandlerThread.run(HandlerThread.java:61)
    at com.google.android.exoplayer2.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)

最佳答案

根据 Google 的说法,2.0 版对于 Live HLS 播放来说非常不稳定。所以我不建议现在切换到 2.0 进行 Live HLS 播放。 关于您的 BehindLiveWindowException 问题,Google 仍在努力解决此问题,作为 Live HLS 搜索功能的一部分。

请在此处跟踪状态: https://github.com/google/ExoPlayer/issues/1782

作为临时修复,您可以在 onError() 中再次调用 preparePlayer()。

 @Ovierride
 public void onError(Exception e) {

   if (e instanceof ExoPlaybackException
            && e.getCause() instanceof BehindLiveWindowException) {
      preparePlayer(true);
    }
 }

关于android - Exoplayer(2.0.0) 在播放实时 HLS 视频时给出 BehindLiveWindowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39770033/

相关文章:

android - 在 RecyclerView 中释放 ExoPlayer

Android Firebase 远程配置 : Application name is not set. 调用 Builder#setApplicationName

java - 改进在 Json 响应中访问多个模型

ffmpeg - 将 ffmpeg 用于传入的 youtube HLS 直播并输出到 rtmp

azure - Windows Azure 媒体服务 Apple HLS 流媒体 - 不播放视频,仅播放音频

java - 如何根据网络服务器上的状态自动更新应用程序变量

android - 语音转文本 在 apk 中包含语音引擎

node.js - 使用 Node JS 的 HLS 流

android - ExoPlayer 无法在使用 FFMPEG 的设备上播放音频