使用 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
我从刚买的音频 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