Add extensive logging to stream worker startPlayback function

This commit is contained in:
MiTHRAL 2026-05-26 17:53:56 -04:00
parent 74f701fb04
commit 384a6f9b94

View file

@ -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";