是否有办法将封面艺术嵌入到 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
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应该能够自己完成添加封面图片的工作,而不必使用单独的工具,但我还没有弄清楚如何做到这一点。
使用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
参数将默默失败。
FFmpeg在这方面有一个未解决的问题。同时,可以使用TagEditor项目来添加封面。 添加方法如下:
tageditor -s cover=ju.jpg --max-padding 100000 -f ki.m4a
要删除:
tageditor -s cover= --max-padding 100000 -f ki.m4a
以下是嵌入专辑封面的 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