FFmpeg,如何将封面艺术(图像)嵌入到 .m4a
Posted
技术标签:
【中文标题】FFmpeg,如何将封面艺术(图像)嵌入到 .m4a【英文标题】:FFmpeg, how to embed cover art (image) to .m4a 【发布时间】:2013-07-21 20:17:04 【问题描述】:有没有办法将封面艺术嵌入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 格式。它们彼此不兼容。 【参考方案1】:mp4art
from 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个image2),我认为ffmpeg应该能够自己做同样的事情,而不是使用单独的工具添加封面图像,但我没有想到怎么做。
【讨论】:
【参考方案2】:通过 -disposition
参数在图像源上指定 attached_pic
属性可以使用 ffmpeg。
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 中也给出了类似的命令作为示例,但请注意,该示例是为 videos 添加封面而不是音频文件。如果选择了错误的流,-disposition
参数会静默失败。
【讨论】:
failure: [ipod @ 0x7fd692008200] 在流 #1 中找不到编解码器 png 的标签,容器当前不支持编解码器 无法为输出文件 #0 写入标头(编解码器参数不正确?):无效参数 初始化输出流 0:1 时出错 -- 流映射:流 #0:0 -> #0:0(复制)流 #1:0 -> #0:1(复制)最后一条消息重复 1 次 添加-id3v2_version 3
似乎在 ffmpeg 4.4 上起作用【参考方案3】:
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
【讨论】:
它的图形用户界面也不错:-)【参考方案4】:使用atomicparsley
嵌入专辑封面的一点扩展版本。在 Mac OS X 上测试。假设当前目录中有folder.jpg
文件。 AtomicParsley 在同一文件夹中创建带有嵌入媒体的临时文件。有一个标志--overWrite
应该改变这种行为,但由于某种原因这对我不起作用。所以我们之后需要删除原始文件。请注意,该脚本将删除 all 文件名中不包含 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
【讨论】:
以上是关于FFmpeg,如何将封面艺术(图像)嵌入到 .m4a的主要内容,如果未能解决你的问题,请参考以下文章