使用 ffmpeg 将专辑封面艺术添加到 FLAC 音频文件

Adding album cover art to FLAC audio files using `ffmpeg`

我从刚买的音频 CD 中提取了文件。我在我的 Macbook Pro Catalina 10.15.6 上使用 Music 应用程序进行了翻录 - 输出格式为 .wav,因为 FLAC 没有选项。我的计划是使用 ffmpeg:

更改格式
% ffmpeg -v
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers

除了添加“专辑封面插图”外,在下面的简短 bash 脚本中实施的 .wav-to-.flac 转换似乎按预期工作:

#!/bin/bash
for file in *.wav
do
echo $file 
ffmpeg -loglevel quiet -i "$file" -ar 48000 -c:a flac -disposition:v AnotherLand.png -vsync 0 -c:v png "${file/%.wav/.flac}"
done

一段时间前,一个与此脚本非常相似的脚本用于我必须执行的一系列 FLAC-to-FLAC 转换以减少位深度。但是,在那种情况下,原始 FLAC 文件已经嵌入了插图。由于此脚本生成可用的音频文件,我决定尝试使用第二个 ffmpeg 命令添加插图。

我做了一些研究,结果告诉我 ffmpeg (1, 2, 3, 4) 在将专辑插图添加到 FLAC 文件时出现问题。

我尝试了上面参考资料中给出的几个命令,但仍然没有找到将专辑插图添加到我的 FLAC 文件的方法。以下命令是一个 highly upvoted answer,我认为它可以工作,但没有:

% ffmpeg -i "01 Grave Walker.flac" -i ./AnotherLand.png -map 0:0 -map 1:0 -codec copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" output.flac

...


Input #0, flac, from '01 Grave Walker.flac':
  Metadata:
    encoder         : Lavf58.76.100
  Duration: 00:06:59.93, start: 0.000000, bitrate: 746 kb/s
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s16
Input #1, png_pipe, from './AnotherLand.png':
  Duration: N/A, bitrate: N/A
  Stream #1:0: Video: png, rgba(pc), 522x522, 25 fps, 25 tbr, 25 tbn, 25 tbc
File 'output.flac' already exists. Overwrite? [y/N] y
[flac @ 0x7fb4d701e800] Video stream #1 is not an attached picture. Ignoring
Output #0, flac, to 'output.flac':
  Metadata:
    encoder         : Lavf58.76.100
  Stream #0:0: Audio: flac, 48000 Hz, stereo, s16
  Stream #0:1: Video: png, rgba(pc), 522x522, q=2-31, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Metadata:
      title           : Album cover
      comment         : Cover (front)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)

...

我不明白错误信息:Video stream #1 is not an attached picture.似乎暗示艺术品是“附加的”(嵌入 ???) 在输入文件中,但正如我指定的艺术品是一个单独的文件,这对我来说毫无意义。

不胜感激。

添加-disposition:v attached_pic:

ffmpeg -i audio.flac -i image.png -map 0:a -map 1 -codec copy -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" -disposition:v attached_pic output.flac