From 384a6f9b947df1e07ed3e12b7597dd2b0663f716 Mon Sep 17 00:00:00 2001 From: MiTHRAL Date: Tue, 26 May 2026 17:53:56 -0400 Subject: [PATCH] Add extensive logging to stream worker startPlayback function --- orb_stream_worker/server.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/orb_stream_worker/server.js b/orb_stream_worker/server.js index e4d9d7a..aa4ea02 100644 --- a/orb_stream_worker/server.js +++ b/orb_stream_worker/server.js @@ -363,6 +363,7 @@ async function startPlayback(session, playback, startSeconds = 0) { ); const options = streamOptions(); + console.log(`[worker] Calling prepareStream with options:`, JSON.stringify(options, null, 2)); const prepared = streamingStack.prepareStream( session.positionSeconds > 0 ? streamUrlAtOffset(input, session.positionSeconds) : input, options, @@ -375,20 +376,41 @@ async function startPlayback(session, playback, startSeconds = 0) { } session.ffmpegCommand = command; + command.on("start", (commandLine) => { + console.log(`[worker] FFmpeg command line: ${commandLine}`); + }); + + command.on("codecData", (data) => { + console.log(`[worker] FFmpeg codec data:`, JSON.stringify(data, null, 2)); + }); + + command.on("progress", (progress) => { + console.log(`[worker] FFmpeg progress: frame=${progress.frames} fps=${progress.currentFps} kbps=${progress.currentKbps} time=${progress.timemark}`); + }); + + command.on("stderr", (line) => { + console.log(`[worker] FFmpeg stderr: ${line}`); + }); + command.on("error", (error) => { if (session.manualStop || abortController.signal.aborted) { + console.log("[worker] FFmpeg command ended/stopped manually."); return; } + console.error("[worker] FFmpeg command error:", error); session.lastError = error && error.message ? String(error.message) : "FFmpeg stream failed"; session.playbackState = "error"; session.workerStatus = "error"; }); + console.log("[worker] Initializing playStream..."); streamingStack.playStream(output, runtime.streamer, playMode, abortController.signal) .then(() => { if (session.manualStop || abortController.signal.aborted) { + console.log("[worker] playStream finished (manually stopped/aborted)."); return; } + console.log("[worker] playStream completed successfully."); session.positionSeconds = session.durationSeconds > 0 ? session.durationSeconds : sessionPlaybackPosition(session); session.startedAtSeconds = 0; session.playbackState = "idle"; @@ -398,8 +420,10 @@ async function startPlayback(session, playback, startSeconds = 0) { }) .catch((error) => { if (session.manualStop || abortController.signal.aborted) { + console.log("[worker] playStream rejected (manually stopped/aborted)."); return; } + console.error("[worker] playStream failed with error:", error); session.lastError = error && error.message ? String(error.message) : "Streaming failed"; session.startedAtSeconds = 0; session.playbackState = "error";