From 5f06ba8f504d632f56eafa9116c311fe8bd74978 Mon Sep 17 00:00:00 2001 From: Rob Walch Date: Fri, 30 Jun 2023 11:54:52 -0700 Subject: [PATCH] Never back-track on first fragment to avoid loop loading Fixes #5609 --- src/controller/stream-controller.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/controller/stream-controller.ts b/src/controller/stream-controller.ts index e37201f1363..0bf0dffb1c8 100644 --- a/src/controller/stream-controller.ts +++ b/src/controller/stream-controller.ts @@ -1111,6 +1111,7 @@ export default class StreamController } // Avoid buffering if backtracking this fragment + const notFirstFragment = frag.sn !== details?.startSN; if (video && remuxResult.independent !== false) { if (details) { const { startPTS, endPTS, startDTS, endDTS } = video; @@ -1135,7 +1136,10 @@ export default class StreamController const startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS; - if (targetBufferTime < startTime - this.config.maxBufferHole) { + if ( + notFirstFragment && + targetBufferTime < startTime - this.config.maxBufferHole + ) { this.backtrack(frag); return; } @@ -1162,7 +1166,7 @@ export default class StreamController } this.bufferFragmentData(video, frag, part, chunkMeta); } - } else if (remuxResult.independent === false) { + } else if (notFirstFragment && remuxResult.independent === false) { this.backtrack(frag); return; }