From 26d523ebad3dfdcb682db049899ada84ac739ed7 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Mon, 9 Mar 2026 00:10:31 +0100 Subject: [PATCH] fix: fallback to opus codec --- apps/web/src/services/renderer/scene-exporter.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/web/src/services/renderer/scene-exporter.ts b/apps/web/src/services/renderer/scene-exporter.ts index a715efe7..c5bad94f 100644 --- a/apps/web/src/services/renderer/scene-exporter.ts +++ b/apps/web/src/services/renderer/scene-exporter.ts @@ -100,8 +100,21 @@ export class SceneExporter extends EventEmitter { let audioSource: AudioBufferSource | null = null; if (this.shouldIncludeAudio && this.audioBuffer) { + let audioCodec: "aac" | "opus" = + this.format === "webm" ? "opus" : "aac"; + + if (audioCodec === "aac" && typeof AudioEncoder !== "undefined") { + const { supported } = await AudioEncoder.isConfigSupported({ + codec: "mp4a.40.2", + sampleRate: this.audioBuffer.sampleRate, + numberOfChannels: this.audioBuffer.numberOfChannels, + bitrate: 192000, + }); + if (!supported) audioCodec = "opus"; + } + audioSource = new AudioBufferSource({ - codec: this.format === "webm" ? "opus" : "aac", + codec: audioCodec, bitrate: qualityMap[this.quality], }); output.addAudioTrack(audioSource);