release: 0.78.4 (bug/plex-transcode-hls-startposition)
gate / frontend (push) Failing after 1m55s
gate / backend (push) Successful in 2m57s
gate / frontend (push) Failing after 1m55s
gate / backend (push) Successful in 2m57s
This commit is contained in:
@@ -261,7 +261,15 @@ export default function PlexPlayer({ itemId, onClose, queue }: Props) {
|
|||||||
hlsRef.current = null;
|
hlsRef.current = null;
|
||||||
}
|
}
|
||||||
if (sess.mode === "hls" && Hls.isSupported()) {
|
if (sess.mode === "hls" && Hls.isSupported()) {
|
||||||
const hls = new Hls({ maxBufferLength: 30, enableWorker: true });
|
// startPosition: 0 — our HLS is a growing EVENT playlist with no ENDLIST (see _HLS_TAIL in
|
||||||
|
// stream.py), which hls.js classifies as LIVE. Its default (startPosition: -1) then starts
|
||||||
|
// playback at the live edge and hugs it, so it never builds a forward buffer (rebuffer
|
||||||
|
// spinners), and on a resume/seek session the segments' absolute PTS (-copyts, offset by the
|
||||||
|
// server's -ss) don't line up with the live-edge timeline → 0 fragments load → permanent
|
||||||
|
// stall. But the seek-restart model means fragment 0 IS the requested content position
|
||||||
|
// (`?t=` positioned the server ffmpeg there), so we always want to start VOD-style at 0 and
|
||||||
|
// buffer forward up to maxBufferLength. Applies to remux + transcode alike (both use copyts).
|
||||||
|
const hls = new Hls({ maxBufferLength: 30, enableWorker: true, startPosition: 0 });
|
||||||
hlsRef.current = hls;
|
hlsRef.current = hls;
|
||||||
hls.loadSource(`${sess.url}?t=${Math.floor(startAt)}`);
|
hls.loadSource(`${sess.url}?t=${Math.floor(startAt)}`);
|
||||||
hls.attachMedia(video);
|
hls.attachMedia(video);
|
||||||
|
|||||||
@@ -14,6 +14,18 @@ export interface ReleaseEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const RELEASE_NOTES: ReleaseEntry[] = [
|
export const RELEASE_NOTES: ReleaseEntry[] = [
|
||||||
|
{
|
||||||
|
version: "0.78.4",
|
||||||
|
date: "2026-08-30",
|
||||||
|
summary:
|
||||||
|
"A fix for stuttering and stalling when the Plex player transcodes a video — playback now starts cleanly and keeps a healthy buffer, whether you play from the start or resume/seek partway through.",
|
||||||
|
fixes: [
|
||||||
|
"A transcoded Plex video (any format your browser can't play natively) no longer rebuffers every second, and resuming or seeking into one no longer leaves it stuck on “Loading…” forever. The player now starts the stream at the position you asked for and buffers ahead, instead of chasing the live edge of an in-progress transcode.",
|
||||||
|
],
|
||||||
|
chores: [
|
||||||
|
"The player builds its HLS client to start at the requested position (the transcode session already begins encoding there), which fixes both the every-second rebuffer and the resume/seek stall in one change. Verified against the HLS library's live-vs-VOD start logic and put through a multi-agent deep-review (correctness, player behaviour, test coverage) that came back clean.",
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
version: "0.78.3",
|
version: "0.78.3",
|
||||||
date: "2026-08-30",
|
date: "2026-08-30",
|
||||||
|
|||||||
Reference in New Issue
Block a user