附加图片是和其他内容一起提供的图像,比如邮件中的照片。在音频或视频文件中,附加图片是存储在文件内部的图像。典型例子是专辑或单曲的封面图。
“Attached Pic”是在元数据报告中标记此类图片的字段名称。这个名称来自 FFmpeg 项目的文件读取程序 ffprobe,它会将该字段写为 attached_pic。
FFmpeg 把文件的每个部分列为一个独立的流。它为每个流分配一组标志,称为 disposition。每个标志要么开启要么关闭,Attached Pic 就是这些标志之一。
数值的呈现方式
ffprobe 读取程序的 -show_streams 选项会为每个流打印该标志,即使文件中没有附加图片。这个标志在输出中有 2 种取值:
0:该流不是附加图片,例如普通的音频或视频流1:该流包含附加图片,比如专辑封面
FFmpeg 为一个文件打印的简短概览中,会把同一个标志显示为 (attached pic)。FFmpeg 只在标志开启时才打印这个标签。
哪些文件携带它
FFmpeg 将附加图片视为只含一帧图像的视频流。因此,带封面的歌曲可以报告 2 个流:一个用于声音,一个用于图片。图片流的编码类型是 video,尽管图片本身不会动。
FFmpeg 会根据格式不同,从不同位置读取图片:
- MP3:ID3v2 标签中的 APIC 帧,ID3v2 标准称其为 Attached picture
- M4A 和 MP4:
covr条目,ExifTool 将其称为CoverArt - FLAC:图片块,一个文件中可以包含多个这样的块
- MKV:具有图像类型的附件,例如名为
cover.jpg或cover.png的文件
照片和电子书会把图片存放在其他字段中。JPEG 照片可以在其 Thumbnail Image 字段中存储一个小预览图。EPUB 电子书最多会将一个图像文件标记为封面。
数值的来源
文件本身并不包含名为 Attached Pic 的字段。FFmpeg 在发现图片帧、图片块或图像附件时,会将该标志设为开启。
对于 MP3 和 FLAC 文件,FFmpeg 还会将图片描述复制到 title 标签中,并将图片类型复制到 comment 标签中。
图片类型是一个从 0 到 20 的数字,用于说明图片展示的内容。FFmpeg 会把该类型写成文本,例如:
- 类型 0,
Other:不符合其他任一类型的图片 - 类型 3,
Cover (front):正面封面,许多播放器在播放时会显示它 - 类型 4:背面封面
- 类型 6:介质本身,例如 CD 的标签面
FFmpeg 只能向部分支持的格式写入嵌入图片。对于图片本身,ID3v2 标准和 Matroska 规范都推荐使用 JPEG 和 PNG。
它的重要性
该标志告诉软件这个流是图片而不是动态视频。在 FFmpeg 命令中,流选择器 V 只会选取不是附加图片的视频流。
图片数据保存在文件内部,所以较大的封面会让整个文件变大。图片也可以展示封面以外的内容,例如表演者或录音地点。
图片帧或图片块也可以保存指向文件外部图像的链接。对于 FLAC 文件,规范要求程序在通过网络加载该图像之前,必须先征求你的同意。