summaryrefslogtreecommitdiff
path: root/apps/web/src/services/renderer
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2026-03-09 00:10:31 +0100
committerMaze Winther <mazewinther@gmail.com>2026-03-09 00:10:31 +0100
commit26d523ebad3dfdcb682db049899ada84ac739ed7 (patch)
tree3920899fab6fc5bb45246d54d55e19fd21214fef /apps/web/src/services/renderer
parent0be9275a2d8d7b024b26b62b52c86effca75ba78 (diff)
downloadopencut-26d523ebad3dfdcb682db049899ada84ac739ed7.tar.gz
fix: fallback to opus codec
Diffstat (limited to 'apps/web/src/services/renderer')
-rw-r--r--apps/web/src/services/renderer/scene-exporter.ts15
1 files changed, 14 insertions, 1 deletions
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<SceneExporterEvents> {
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);