FFmpeg如何将封面艺术(图像)嵌入到.m4a文件中

16

是否有办法将封面艺术嵌入到 m4a 文件中?

这个方法对于 mp3 有效,但对于 m4a 无效。

ffmpeg -i tests/in.m4a -i cover.jpg -map 0:0 -map 1:0 -acodec copy \
  -id3v2_version 3 tests/out.m4a

为什么在MPEG4文件中使用ID3格式,这两者并不兼容。 - tripulse
4个回答

18

mp4v2中的mp4art也可以做到这一点:

mp4art --add cover.jpg track.m4a

我尝试使用mp4art,在添加了封面后,FFmpeg的信息如下:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fce82011400] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '01 - Welcome To New York.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    title           : Welcome To New York
    artist          : Taylor Swift
    album           : 1989 (Deluxe)
    date            : 2014
    encoder         : Lavf55.48.100
    genre           : Country & Folk
    track           : 1
    disc            : 1
  Duration: 00:03:32.65, start: 0.046444, bitrate: 250 kb/s
    Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 238 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg), 1400x1400 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
Input #1, image2, from 'Album Cover.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg), 1400x1400 [SAR 72:72 DAR 1:1], 25 tbr, 25 tbn, 25 tbc

看起来有1个文件有两种输入格式(1个m4a,1个image2),我认为FFmpeg应该能够自己完成添加封面图片的工作,而不必使用单独的工具,但我还没有弄清楚如何做到这一点。


17

使用ffmpeg,可以通过在图像源上指定 -disposition 参数中的 attached_pic 属性来实现。

ffmpeg -i input.m4a -i image.jpg -map 0 -map 1 -c copy -disposition:v:1 attached_pic output.m4a 

使用FFmpeg 4.2.2进行测试。

FFmpeg文档中也提供了一个类似的示例命令,但要小心,该示例是用于向视频添加封面而不是音频文件。如果选择了错误的流,则-disposition参数将默默失败。


5
错误:[ipod @ 0x7fd692008200] 在流#1中找不到使用PNG编解码器的标签,容器当前不支持该编解码器。 无法为输出文件#0编写头文件(编解码器参数不正确?):无效参数 初始化输出流0:1时出错-- 流映射: 流#0:0->#0:0(复制) 流#1:0->#0:1(复制) 最后一条消息重复了1次。 - Chaitanya Bapat
在ffmpeg 4.4上添加“-id3v2_version 3”似乎起到了作用。 - Pedro A. Aranda

7

FFmpeg在这方面有一个未解决的问题。同时,可以使用TagEditor项目来添加封面。 添加方法如下:

tageditor -s cover=ju.jpg --max-padding 100000 -f ki.m4a

要删除:

tageditor -s cover= --max-padding 100000 -f ki.m4a

它也有漂亮的图形用户界面 :-) - Xan-Kun Clark-Davis

3

以下是嵌入专辑封面的 atomicparsley 的扩展版本。已在 Mac OS X 上测试。假设当前目录中有 folder.jpg 文件。AtomicParsley 在相同的文件夹中创建带嵌入式媒体的临时文件。有一个标志 --overWrite,据说可以改变此行为,但由于某种原因,对我来说这并不起作用。因此,我们需要删除原始文件。请注意,该脚本将删除所有不包含文件名中的 temp 的文件。所以要小心(或修改脚本)。最后,该脚本会重命名新创建的文件,以删除其文件名中的 -temp- 部分。

for f in *.m4a
do
    atomicparsley "$f" --artwork folder.jpg
done
rm !(*temp*)
for f in *.m4a
do
    g=${f//-temp*./.}
    mv "$f" "$g"
done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接