Skip to content

Commit 8335bf4

Browse files
JonnyBurgerclaude
andcommitted
@remotion/media: Fix audio scheduling and debug overlay at non-1x playback rates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 85adeed commit 8335bf4

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

packages/media/src/debug-overlay/preview-overlay.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const drawPreviewOverlay = ({
99
playing,
1010
audioIteratorManager,
1111
videoIteratorManager,
12+
playbackRate,
1213
}: {
1314
context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D;
1415
audioTime: number | null;
@@ -17,6 +18,7 @@ export const drawPreviewOverlay = ({
1718
playing: boolean;
1819
audioIteratorManager: AudioIteratorManager | null;
1920
videoIteratorManager: VideoIteratorManager | null;
21+
playbackRate: number;
2022
}) => {
2123
// Collect all lines to be rendered
2224
const lines: string[] = [
@@ -26,7 +28,7 @@ export const drawPreviewOverlay = ({
2628
`Frames rendered: ${videoIteratorManager?.getFramesRendered()}`,
2729
`Audio context state: ${audioContextState}`,
2830
audioTime
29-
? `Audio time: ${(audioTime - audioSyncAnchor).toFixed(3)}s`
31+
? `Audio time: ${((audioTime - audioSyncAnchor) * playbackRate).toFixed(3)}s`
3032
: null,
3133
].filter(Boolean) as string[];
3234

@@ -40,7 +42,7 @@ export const drawPreviewOverlay = ({
4042
?.getNumberOfChunksAfterResuming();
4143
if (queuedPeriod && audioTime) {
4244
lines.push(
43-
`Audio queued until: ${(queuedPeriod.until - (audioTime - audioSyncAnchor)).toFixed(3)}s`,
45+
`Audio queued until: ${(queuedPeriod.until - (audioTime - audioSyncAnchor) * playbackRate).toFixed(3)}s`,
4446
);
4547
} else if (numberOfChunksAfterResuming) {
4648
lines.push(

packages/media/src/media-player.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,10 @@ export class MediaPlayer {
640640
if (delay >= 0) {
641641
node.start(this.sharedAudioContext.currentTime + delay);
642642
} else {
643-
node.start(this.sharedAudioContext.currentTime, -delay);
643+
node.start(
644+
this.sharedAudioContext.currentTime,
645+
-delayWithoutPlaybackRate,
646+
);
644647
}
645648
};
646649

@@ -682,6 +685,7 @@ export class MediaPlayer {
682685
audioIteratorManager: this.audioIteratorManager,
683686
playing: this.playing,
684687
videoIteratorManager: this.videoIteratorManager,
688+
playbackRate: this.playbackRate * this.globalPlaybackRate,
685689
});
686690
}
687691
};

0 commit comments

Comments
 (0)