diff --git a/apps/web/src/lib/export/audio-codec-support.ts b/apps/web/src/lib/export/audio-codec-support.ts new file mode 100644 index 000000000..fa9b1dab4 --- /dev/null +++ b/apps/web/src/lib/export/audio-codec-support.ts @@ -0,0 +1,45 @@ +const CANDIDATE_CONFIGS: AudioEncoderConfig[] = [ + { + codec: "mp4a.40.2", + sampleRate: 44100, + numberOfChannels: 2, + bitrate: 192000, + }, + { + codec: "mp4a.40.2", + sampleRate: 44100, + numberOfChannels: 2, + bitrate: 128000, + }, + { + codec: "mp4a.40.2", + sampleRate: 44100, + numberOfChannels: 1, + bitrate: 128000, + }, + { + codec: "mp4a.40.2", + sampleRate: 48000, + numberOfChannels: 2, + bitrate: 128000, + }, +]; + +export async function resolveSupportedMp4AudioConfig(): Promise { + if (typeof AudioEncoder === "undefined") { + return null; + } + + for (const config of CANDIDATE_CONFIGS) { + try { + const support = await AudioEncoder.isConfigSupported(config); + if (support.supported) { + return config; + } + } catch { + continue; + } + } + + return null; +}