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 // detect sample rate of original file and use
if (isLosslessToLossy) { if (isLosslessToLossy) {
// use safe default // use safe default
sampleRateArgs = ["-ar", "44100"]; const defaultRate = to === ".opus" ? "48000" : "44100";
log( log(
["converters", this.name], ["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 { } else {
const inputSampleRate = let inputSampleRate = await this.detectAudioSampleRate(ffmpeg);
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 sampleRateArgs = inputSampleRate
? ["-ar", inputSampleRate.toString()] ? ["-ar", inputSampleRate.toString()]
: []; : [];

View File

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

View File

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