diff --git a/archive_bot/media.py b/archive_bot/media.py index 9f2f424..ba31683 100644 --- a/archive_bot/media.py +++ b/archive_bot/media.py @@ -306,6 +306,7 @@ def jellyfin_stream_url(base_url: str, item_id: str, api_key: str, subtitle_inde params = {"api_key": api_key} if subtitle_index is not None: params["SubtitleStreamIndex"] = str(subtitle_index) + params["SubtitleMethod"] = "Encode" else: params["static"] = "true" query = urllib.parse.urlencode(params) diff --git a/orb_stream_worker/server.js b/orb_stream_worker/server.js index 307dced..b4e570e 100644 --- a/orb_stream_worker/server.js +++ b/orb_stream_worker/server.js @@ -192,12 +192,6 @@ function playOptions() { return STREAM_TYPE === "go-live" ? { type: "go-live" } : { type: "camera" }; } -function streamUrlAtOffset(url, startSeconds) { - const parsed = new URL(url); - parsed.searchParams.set("StartTimeTicks", String(Math.max(0, Math.floor(startSeconds)) * 10000000)); - return parsed.toString(); -} - function sessionPlaybackPosition(session) { if (session.playbackState !== "playing") { return session.positionSeconds; @@ -400,13 +394,12 @@ async function startPlayback(session, playback, startSeconds = 0) { ); const options = streamOptions(); - const isJellyfinTranscode = input.includes("SubtitleStreamIndex="); - if (session.positionSeconds > 0 && !isJellyfinTranscode) { + if (session.positionSeconds > 0) { options.customInputOptions = ["-ss", String(session.positionSeconds)]; } console.log(`[worker] Calling prepareStream with options:`, JSON.stringify(options, null, 2)); const prepared = streamingStack.prepareStream( - session.positionSeconds > 0 ? streamUrlAtOffset(input, session.positionSeconds) : input, + input, options, abortController.signal, );