#android #http-live-streaming #exoplayer #exoplayer2.x
#Android #http-прямая трансляция #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)
Комментарии:
1. Какие-либо обновления по этому поводу на данный момент? Потому что я также сталкиваюсь с такой же проблемой на exoplayer r2.9.5 для воспроизведения потокового видео в реальном времени.
Ответ №1:
Согласно версии Google 2.0 очень нестабилен для воспроизведения в реальном времени. Поэтому я не рекомендую на данный момент переходить на 2.0 для воспроизведения в режиме реального времени. Возвращаясь к вашей проблеме BehindLiveWindowException, Google все еще работает над устранением этой проблемы в рамках функции Live HLS seek.
Пожалуйста, отслеживайте статус здесь:
https: // github.com/google/ ExoPlayer/issues /1782
В качестве временного исправления вы можете снова вызвать preparePlayer() в onError().
@Ovierride
public void onError(Exception e) {
if (e instanceof ExoPlaybackException
amp;amp; e.getCause() instanceof BehindLiveWindowException) {
preparePlayer(true);
}
}
Комментарии:
1. да, это работает для меня, теперь похоже, что его автоматический запуск в этом исключении требует дополнительной проверки на наличие какого-либо побочного эффекта.
Ответ №2:
Позиция воспроизведения может оказаться за окном live, например, если проигрыватель приостановлен или буферизуется в течение достаточно длительного периода времени. Если это произойдет, эта ссылка вам поможет.