fix: m4a/alac w/ album art conversion fails

This commit is contained in:
Maya 2025-12-02 19:03:26 +03:00
parent 8ca43984a0
commit 938c25abca
No known key found for this signature in database
1 changed files with 5 additions and 0 deletions

View File

@ -320,6 +320,7 @@ export class FFmpegConverter extends Converter {
): Promise<string[]> { ): Promise<string[]> {
const inputFormat = input.from.slice(1); const inputFormat = input.from.slice(1);
const outputFormat = to.slice(1); const outputFormat = to.slice(1);
const m4a = isAlac || to === ".m4a";
const lossless = [ const lossless = [
"flac", "flac",
@ -340,6 +341,7 @@ export class FFmpegConverter extends Converter {
let audioBitrateArgs: string[] = []; let audioBitrateArgs: string[] = [];
let sampleRateArgs: string[] = []; let sampleRateArgs: string[] = [];
let metadataArgs: string[] = []; let metadataArgs: string[] = [];
let m4aArgs: string[] = [];
log(["converters", this.name], `keep metadata: ${keepMetadata}`); log(["converters", this.name], `keep metadata: ${keepMetadata}`);
if (!keepMetadata) { if (!keepMetadata) {
@ -509,9 +511,12 @@ export class FFmpegConverter extends Converter {
`Converting audio ${input.from} to audio ${to}`, `Converting audio ${input.from} to audio ${to}`,
); );
const { audio: audioCodec } = getCodecs(to, isAlac); const { audio: audioCodec } = getCodecs(to, isAlac);
if (m4a && keepMetadata) m4aArgs = ["-c:v", "copy"]; // for album art
return [ return [
"-i", "-i",
"input", "input",
...m4aArgs,
"-c:a", "-c:a",
audioCodec, audioCodec,
...metadataArgs, ...metadataArgs,