12

有没有办法将封面艺术嵌入到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

4 回答 4

15

mp4artfrommp4v2也可以这样做:

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 image2),我认为 ffmpeg 应该能够自己做同样的事情,而不是使用单独的工具来添加封面图像,但我还没有弄清楚如何。

于 2014-11-25T15:33:34.813 回答
15

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

于 2020-04-03T16:07:47.457 回答
6

FFmpeg在此功能上有一个未解决的问题。同时,可以使用TagEditor 项目添加封面。添加:

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

去除:

tageditor -s cover= --max-padding 100000 -f ki.m4a
于 2013-07-22T23:59:55.433 回答
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
于 2014-09-14T09:16:43.077 回答