fix: opus sample rate fallback

opus doesn't support 44.1khz
if detected/default sample rate is 44.1khz, uses 48kz instead
This commit is contained in:
Maya 2025-11-19 20:47:00 +03:00
parent 947b787dc4
commit e0e4a0001e
No known key found for this signature in database
3 changed files with 14 additions and 7 deletions

View File

@ -398,14 +398,23 @@ export class FFmpegConverter extends Converter {
// detect sample rate of original file and use
if (isLosslessToLossy) {
// use safe default
sampleRateArgs = ["-ar", "44100"];
const defaultRate = to === ".opus" ? "48000" : "44100";
log(
["converters", this.name],
`converting from lossless to lossy, using default sample rate: 44100Hz`,
`converting from lossless to lossy, using default sample rate: ${defaultRate}Hz`,
);
sampleRateArgs = ["-ar", defaultRate];
} else {
const inputSampleRate =
await this.detectAudioSampleRate(ffmpeg);
let inputSampleRate = await this.detectAudioSampleRate(ffmpeg);
if (to === ".opus" && inputSampleRate === 44100) {
// special case: opus does not support 44100Hz which is more common - adjust to 48000Hz
log(
["converters", this.name],
"conversion to opus with 44100Hz sample rate detected, adjusting to 48000Hz",
);
inputSampleRate = 48000;
}
sampleRateArgs = inputSampleRate
? ["-ar", inputSampleRate.toString()]
: [];

View File

@ -20,9 +20,7 @@
} from "$lib/store/index.svelte";
import "$lib/css/app.scss";
import { browser } from "$app/environment";
import { page } from "$app/state";
import { initStores as initAnimStores } from "$lib/animation/index.js";
import { locales, localizeHref } from "$lib/paraglide/runtime";
import { VertdInstance } from "$lib/sections/settings/vertdSettings.svelte.js";
let { children, data } = $props();

View File

@ -1,5 +1,5 @@
<script lang="ts">
import { error, log } from "$lib/logger";
import { error } from "$lib/logger";
import * as About from "$lib/sections/about";
import { InfoIcon } from "lucide-svelte";
import { onMount } from "svelte";