diff --git a/src/components/video-editor/VideoEditor.tsx b/src/components/video-editor/VideoEditor.tsx index 919ed14e..794dba45 100644 --- a/src/components/video-editor/VideoEditor.tsx +++ b/src/components/video-editor/VideoEditor.tsx @@ -946,6 +946,7 @@ export default function VideoEditor() { cursorTelemetry, clipRegions, padding, + resolvedWebcamVideoUrl, shadowIntensity, showCursor, speedRegions, @@ -4356,6 +4357,7 @@ export default function VideoEditor() { padding, cropRegion, webcam, + resolvedWebcamVideoUrl, annotationRegions, autoCaptions, autoCaptionSettings, diff --git a/src/lib/exporter/muxer.ts b/src/lib/exporter/muxer.ts index cfb78ca9..54e551c9 100644 --- a/src/lib/exporter/muxer.ts +++ b/src/lib/exporter/muxer.ts @@ -172,8 +172,11 @@ export class VideoMuxer { if (!sink) { throw new Error("Stream target closed before finalization"); } - const closeResult = await closeIpcExportStream(sink.streamId); + // Clear streamSink before awaiting close so a concurrent destroy()→ + // abortStream() short-circuits on `!this.streamSink` instead of racing + // us for the same streamId. this.streamSink = null; + const closeResult = await closeIpcExportStream(sink.streamId); return { mode: "stream", tempFilePath: closeResult.tempPath,