FFmpeg,如何将封面艺术(图像)嵌入.m4a

时间:2013-07-22 22:43:53

标签: ffmpeg aac mpeg-4 m4a

有没有办法将封面图片嵌入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

4 个答案:

答案 0 :(得分:13)

来自mp4art

mp4v2也可以这样做:

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个文件有2种输入格式(1 m4a,1个图像2),我认为ffmpeg应该能够自己做同样的事情,而不是使用单独的工具来添加封面图像,但我没有'弄清楚如何。

答案 1 :(得分:9)

对于ffmpeg,可以通过attached_pic参数在图像源上指定-disposition属性。

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 docs中也给出了类似的命令作为示例,但是请注意,该示例用于为视频添加封面,而不是为音频文件添加封面。如果选择了错误的流,则-disposition参数会静默失败。

答案 2 :(得分:6)

FFmpeg在此功能上有open issue。与此同时,封面 可以使用TagEditor project添加。添加:

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

删除:

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

答案 3 :(得分:2)

使用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