如何使用 ffmpeg 添加专辑封面?
Posted
技术标签:
【中文标题】如何使用 ffmpeg 添加专辑封面?【英文标题】:How to add album art with ffmpeg? 【发布时间】:2013-09-13 16:41:07 【问题描述】:我一直无法在 mp3 文件中添加专辑封面。
我已经对此问题进行了研究和搜索,但尚未找到解决方案。 ffmpeg
文档建议使用此脚本将图像(专辑封面)添加到 mp3:
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
来源:http://www.ffmpeg.org/ffmpeg-all.html#mp3
但它不起作用。我的控制台输出是:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
我寻找另一个解决方案并得到了这个:http://trac.ffmpeg.org/ticket/2221:
ffmpeg -i input.mp3 -i cover.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
这会返回相同的输出:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
有人可以帮帮我吗?
nb:我使用的是 ubuntu 12.04 和 ffmpeg 版本 0.8.6-4:0.8.6-0。
谢谢。
【问题讨论】:
只是关于 -c ?您是否在使用旧版本时尝试“-acodec copy”...并尝试更新! 我已经尝试将 -c 替换为 -codec 但返回的输出相同:无法识别的选项 'codec' 无法为选项 'codec' 设置值 'copy' 您使用的是旧的、伪造的 ffmpeg 版本,在线文档不支持该版本。见Who can tell me the difference and relation between ffmpeg, libav, and avconv?。您可以通过关注step-by-step guide to compile ffmpeg 或简单地使用Linux build of ffmpeg 来获取最新的、真正的ffmpeg。 【参考方案1】:使用最新版本,
ffmpeg -i in.mp3 -i test.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.mp3
使用-map
将输入流关联到输出
使用-c copy
直接解复用/再复用-id3v2_version 3
是您的命令行中缺少的内容。请注意,这会写一个 IDV2.3 但你可以要求一个 2.4 (-id3v2_version 4
)
使用-id3v2_version 3
选项,-metadata
option 将得到很好的解释
注意:元数据注释区分大小写。
【讨论】:
上面的一个“-metadata:s:v”选项缺少“-”。这给了我一个错误“[NULL @ 0x7ffd7400fa00] Unable to find a suitable output format for 'metadata:s:v' || metadata:s:v: Invalid argument”。我在答案中更正了它。 comment="Cover (front)" - 不是 comment="Cover (Front)" 我不得不说不应该跳过“-id3v2_version 3”参数。没有它,封面将在 Mac 上可见,但在 Windows 上不可见。 在某些程序(vlc 和 totem)中使用此方法专辑封面显示,但在通常显示 mp3 文件专辑封面的其他程序(rhythmbox 和 nautilus)中不显示。【参考方案2】:这里有一件重要的事情需要注意,这让我耽误了一个小时的工作:
ffmpeg -i in.mp3 -i test.jpeg -map 0:0 -map 1:0 -codec copy -id3v2_version 3 \
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" out.mp3
comment="Cover (front)"
中的f
必须为小写。如果没有,ID3头中的图片类型将不会被设置!
另一个可能对某人有所帮助的提示:为避免将 JPEG 封面图像转换为 png,您必须设置 -codec copy
。
【讨论】:
【参考方案3】:问题在于您没有定义要复制的编解码器。如果音频应该是-c:a copy
,则封面被识别为视频(去图!!),所以-c:v copy
ffmpeg -i audio-in.mp3 -i picture.png -c:a copy -c:v copy -map 0:0 -map 1:0 -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" audio-out.mp3
【讨论】:
以上是关于如何使用 ffmpeg 添加专辑封面?的主要内容,如果未能解决你的问题,请参考以下文章