视频和图片的元数据IPTC处理
图片
MAC系统
安装
如果没装Homebrew,先安装 Homebrew,再执行
单图追加
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original "/Users/xxx/图片路径/wooden_plant_markers_05_3188x1972.png"
|
批量追加
批量追加文件夹内所有 png/jpg
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext png -ext jpg "/你的图片文件夹路径/"
|
查看图片元数据
1
| exiftool -XMP-dc:Subject 拖拽图片到终端
|
单图重写
1
| exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original 图片路径.png
|
单图删除标签
1
| exiftool -XMP-dc:Subject= -overwrite_original 图片路径.png
|
批量覆盖式重写
1
| exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original -ext png -ext jpg /目标文件夹/
|
关键区分(新增 vs 修改)
+=”xxx”:新增(追加)→ 推荐日常使用,避免误删已有元数据
=”xxx”:覆盖修改 → 谨慎使用,会清除原本存在的 Subject
批量删除标签
删除文件夹内所有 PNG / JPG 的 XMP-dc:Subject(直接修改原文件)
1
| exiftool -XMP-dc:Subject= -overwrite_original -ext png -ext jpg "/你的图片文件夹路径"
|
XMP-dc:Subject= 赋值为空 = 删除此字段
-ext png -ext jpg 只处理这两种格式,可以按需删减
-overwrite_original 直接覆盖原图;初次测试建议先移除该参数,会自动生成 xxx_original 备份文件
安全测试版本(先生成备份,不直接覆盖原图,推荐先测试)
1
| exiftool -XMP-dc:Subject= -ext png -ext jpg "/你的图片文件夹路径"
|
只删除包含 contains-synthetic-performer 这条内容(精准删除,保留其他 Subject 文本)
1
| exiftool -XMP-dc:Subject-="contains-synthetic-performer" -overwrite_original -ext png -ext jpg "/你的图片文件夹路径"
|
-= 代表从现有列表中移除指定条目,不会清空整个字段。
Windows系统
安装
官网下载:https://exiftool.org/
解压,把 exiftool(-k).exe 重命名为 exiftool.exe
将 exe 文件放入 C:\Windows\ 目录,即可在任意文件夹直接调用命令
图形界面备选:ExifToolGUI(免费 GUI 外壳,底层还是 ExifTool,适合不想敲命令)
追加标签
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext png -ext jpg "D:\xxx文件夹"
|
覆盖写入
1
| exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original -ext png -ext jpg "D:\xxx文件夹"
|
精准删除
1
| exiftool -XMP-dc:Subject-="contains-synthetic-performer" -overwrite_original -ext png -ext jpg "D:\xxx文件夹"
|
批量清空整个 XMP-dc:Subject 字段
1
| exiftool -XMP-dc:Subject= -overwrite_original -ext png -ext jpg "D:\xxx文件夹"
|
单张图片测试写法示例
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original "D:\photo\test.png"
|
验证命令(检查是否写入 / 删除成功)
1
| exiftool -XMP-dc:Subject "D:\photo\test.png"
|
关键参数说明
-overwrite_original:直接修改原图;去掉此参数,会生成 xxx_original.png 备份文件,初次测试建议先移除
-ext png -ext jpg:限定只处理 png、jpg;不需要某格式可以删掉
Windows 路径带空格:文件夹路径必须包裹英文双引号
Windows 图形界面软件备选(不用命令行)
MetaImage Windows 版:和 Mac 同款,可视化编辑 XMP → Dublin Core → Subject
ExifToolGUI:免费,可视化操作 ExifTool,适合批量素材
Photoshop:同样存在 PNG 元数据兼容缺陷,不推荐作为主力打标工具
视频
单个
查询(查看当前标签,Mac / Windows 完全一致)
1
| exiftool -XMP-dc:Subject "文件完整路径.mp4"
|
追加(新增标签,保留已存在的其他 Subject 条目,推荐日常使用)
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original "文件完整路径.mp4"
|
覆盖修改(清空全部原有 Subject,强制写入本条,谨慎使用)
1
| exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original "文件完整路径.mp4"
|
精准删除(仅移除 contains-synthetic-performer,保留其余 Subject 内容)
1
| exiftool -XMP-dc:Subject-="contains-synthetic-performer" -overwrite_original "文件完整路径.mp4"
|
清空整个 dc:Subject 字段(全部条目删除)
1
| exiftool -XMP-dc:Subject= -overwrite_original "文件完整路径.mp4"
|
批量
批量追加标签
1
| exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext mp4 "目标文件夹路径"
|
批量覆盖修改 Subject
1
| exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original -ext mp4 "目标文件夹路径"
|
批量精准移除本条标签
1
| exiftool -XMP-dc:Subject-="contains-synthetic-performer" -overwrite_original -ext mp4 "目标文件夹路径"
|
批量清空所有文件的 dc:Subject 字段
1
| exiftool -XMP-dc:Subject= -overwrite_original -ext mp4 "目标文件夹路径"
|
参数说明:
-ext mp4:只匹配 mp4 文件;如需同时支持 mov,改为 -ext mp4 -ext mov
-overwrite_original:直接修改源文件;移除该参数会自动生成 xxx_original.mp4 备份文件,适合初次测试
扩展
单文件示例
1 2 3 4 5 6
| exiftool \ -XMP-dc:Subject+="contains-synthetic-performer" \ -XMP-dc:Creator="创作者名称" \ -XMP-dc:Source="素材来源链接" \ -XMP-dc:Description="视频描述文字" \ -overwrite_original "文件路径.mp4"
|
批量示例
1 2 3 4 5
| exiftool \ -XMP-dc:Subject+="contains-synthetic-performer" \ -XMP-dc:Creator="创作者名称" \ -XMP-dc:Source="素材来源链接" \ -overwrite_original -ext mp4 "目标文件夹路径"
|
注意
macOS 与 Windows 系统差异 & 重要注意事项
- 系统差异
① 可执行程序名称
Mac:直接调用 exiftool
Windows:环境变量配置完成可写 exiftool;未配置环境变量必须写 exiftool.exe
② 文件路径分隔符
Mac:/
示例:”/Users/xxx/AmazonVideo/demo.mp4”
Windows:
CMD:推荐 \;PowerShell:/ 和 \ 均可
示例:”D:\AmazonVideo\demo.mp4”
路径包含空格必须包裹英文双引号 “路径”,两端规则统一。
多行命令续行符号
Mac(zsh/bash)
1 2 3
| exiftool \ -XMP-dc:Subject+="xxx" \ -overwrite_original "文件.mp4"
|
Windows CMD
1 2 3
| exiftool ^ -XMP-dc:Subject+="xxx" ^ -overwrite_original "D:\video.mp4"
|
Windows PowerShell
1 2 3
| exiftool ` -XMP-dc:Subject+="xxx" ` -overwrite_original "D:\video.mp4"
|
通用高危注意事项
视频编码顺序硬性规则
必须:视频导出最终 MP4 → ExifTool 写入元数据;
禁止:先打标签,再使用剪映 / FFmpeg/AME 二次转码,转码工具会丢弃 XMP 元数据。
容器格式兼容
✅ 稳定支持:MP4、MOV
⚠️ MKV:XMP 写入兼容性差,电商平台大概率无法识别
❌ WebM、AVI:不建议嵌入 XMP 用于亚马逊合规场景
校验标准
剪映、播放器、媒体预览工具无法可靠读取视频内嵌 XMP,唯一校验方式:exiftool 查询命令
字符引号规范
全部使用英文双引号包裹文本内容;Windows CMD 对单引号支持存在缺陷,不要混用单引号。
元数据字段参考
XMP元数据字段完整对照表
说明:
- 字段前缀
XMP- 为ExifTool调用格式;
- PNG、MP4视频仅支持XMP字段,不支持老式IPTC-IIM;
dc:Subject 为数组Bag类型,使用 += 追加;其余大多为单文本;
- 区分两套容易混淆地点字段:
photoshop:*(PS私有) vs Iptc4xmpCore:*(标准跨软件,推荐优先使用)
1. Dublin Core(dc 命名空间|核心基础字段)
| UI展示名称 |
ExifTool完整指令字段 |
命名空间 |
数据类型 |
业务备注 |
| Title |
XMP-dc:Title |
dc |
单文本 |
素材标题 |
| Description |
XMP-dc:Description |
dc |
单文本 |
素材描述 |
| Creator |
XMP-dc:Creator |
dc |
单文本 |
创作者 |
| Source |
XMP-dc:Source |
dc |
单文本 |
素材来源链接/来源说明 |
| Subject |
XMP-dc:Subject |
dc |
Bag数组 |
✅亚马逊合规标签 contains-synthetic-performer 存放位置 |
| Rights |
XMP-dc:Rights |
dc |
单文本 |
版权文字声明 |
2. IPTC4XMP Core(标准IPTC XMP,推荐优先使用)
| UI展示名称 |
ExifTool完整指令字段 |
命名空间 |
数据类型 |
业务备注 |
| Rights Usage Terms |
XMP-Iptc4xmpCore:RightsUsageTerms |
Iptc4xmpCore |
单文本 |
使用权限说明 |
| City |
XMP-Iptc4xmpCore:City |
Iptc4xmpCore |
单文本 |
城市 |
| State/Province |
XMP-Iptc4xmpCore:ProvinceState |
Iptc4xmpCore |
单文本 |
省/州 |
| Country |
XMP-Iptc4xmpCore:Country |
Iptc4xmpCore |
单文本 |
国家名称 |
| Country Code |
XMP-Iptc4xmpCore:CountryCode |
Iptc4xmpCore |
单文本 |
ISO两位国家代码(CN/US等) |
| Sublocation |
XMP-Iptc4xmpCore:Sublocation |
Iptc4xmpCore |
单文本 |
细分地点 |
| Intellectual Genre |
XMP-Iptc4xmpCore:IntellectualGenre |
Iptc4xmpCore |
单文本 |
作品类型 |
| Headline |
XMP-Iptc4xmpCore:Headline |
Iptc4xmpCore |
单文本 |
新闻/素材标题摘要 |
3. Photoshop 私有XMP命名空间(不推荐新项目优先使用,兼容旧PS文件)
| UI展示名称 |
ExifTool完整指令字段 |
命名空间 |
| City |
XMP-photoshop:City |
photoshop |
| Country |
XMP-photoshop:Country |
photoshop |
| Credit |
XMP-photoshop:Credit |
photoshop |
| Authors Position |
XMP-photoshop:AuthorsPosition |
photoshop |
| Caption Writer |
XMP-photoshop:CaptionWriter |
photoshop |
| Date Created |
XMP-photoshop:DateCreated |
photoshop |
4. xmpRights 版权命名空间
| UI展示名称 |
ExifTool完整指令字段 |
命名空间 |
| Copyright Notice |
XMP-xmpRights:CopyrightNotice |
xmpRights |
| Copyright Status |
XMP-xmpRights:Marked |
xmpRights |
目标标签:contains-synthetic-performer
单文件操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| exiftool -XMP-dc:Subject "文件路径.mp4"
exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original "文件路径.mp4"
exiftool -XMP-dc:Subject="contains-synthetic-performer" -overwrite_original "文件路径.mp4"
exiftool -XMP-dc:Subject-="contains-synthetic-performer" -overwrite_original "文件路径.mp4"
exiftool -XMP-dc:Subject= -overwrite_original "文件路径.mp4"
|
脚本
MAC
图片
【图片写入】mac_image_add.sh
1 2 3 4 5 6 7
| #!/bin/zsh TARGET_DIR="/xxx/xxx"
echo "===== 图片:添加 contains-synthetic-performer 标签 =====" exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext png -ext jpg -ext webp "$TARGET_DIR" echo "操作完成,按回车退出" read
|
【图片校验】mac_image_check.sh
1 2 3 4 5 6 7
| #!/bin/zsh TARGET_DIR="/xxx/xxx"
echo "===== 图片:读取 XMP-dc:Subject =====" exiftool -XMP-dc:Subject -ext png -ext jpg -ext webp "$TARGET_DIR" echo "查询完成,按回车退出" read
|
mac_image_check_missing.sh(图片校验,导出缺失清单)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/bin/zsh TARGET_DIR="/xxx/AddIPTC" OUTPUT_FILE="$TARGET_DIR/missing_image_tag_list.txt"
echo "===== 图片:查找缺失 contains-synthetic-performer 的文件 =====" echo "输出文件路径:$OUTPUT_FILE"
> "$OUTPUT_FILE"
exiftool -filename -ext png -ext jpg -ext webp \ -if 'not $XMP-dc:Subject =~ /contains-synthetic-performer/' \ -s3 "$TARGET_DIR" >> "$OUTPUT_FILE"
echo "======================================" echo "查找完成!缺失标签文件已保存至:" echo "$OUTPUT_FILE" echo "按回车关闭窗口" read
|
视频
【视频写入】mac_video_add.sh
1 2 3 4 5 6 7
| #!/bin/zsh TARGET_DIR="/xxx/xxx"
echo "===== 视频:添加 contains-synthetic-performer 标签 =====" exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext mp4 -ext mov -ext webm -ext mkv "$TARGET_DIR" echo "操作完成,按回车退出" read
|
【视频校验】mac_video_check.sh
1 2 3 4 5 6 7
| #!/bin/zsh TARGET_DIR="/xxx/xxx"
echo "===== 视频:读取 XMP-dc:Subject =====" exiftool -XMP-dc:Subject -ext mp4 -ext mov -ext webm -ext mkv "$TARGET_DIR" echo "查询完成,按回车退出" read
|
mac_video_check_missing.sh(视频校验,导出缺失清单)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/bin/zsh TARGET_DIR="/xxx/AddIPTC" OUTPUT_FILE="$TARGET_DIR/missing_video_tag_list.txt"
echo "===== 视频:查找缺失 contains-synthetic-performer 的文件 =====" echo "输出文件路径:$OUTPUT_FILE"
> "$OUTPUT_FILE"
exiftool -filename -ext mp4 -ext mov -ext webm -ext mkv \ -if 'not $XMP-dc:Subject =~ /contains-synthetic-performer/' \ -s3 "$TARGET_DIR" >> "$OUTPUT_FILE"
echo "======================================" echo "查找完成!缺失标签文件已保存至:" echo "$OUTPUT_FILE" echo "按回车关闭窗口" read
|
执行
授权
1
| chmod +x mac_image_add.sh mac_image_check.sh mac_video_add.sh mac_video_check.sh
|
或
1
| chmod +x mac_image_add.sh mac_image_check_missing.sh mac_video_add.sh mac_video_check_missing.sh
|
按实际用到的脚步来选
双击运行;或者终端 ./mac_add_tag.sh
注意:mac 默认 zsh 脚本头用 #!/bin/zsh,如果你用 bash 可改成 #!/bin/bash
Windows
图片
【图片写入】win_image_add.bat
1 2 3 4 5 6 7
| @echo off set "TARGET_DIR=%USERPROFILE%\xxx\xxx" echo ===== 图片:添加 contains-synthetic-performer 标签 ===== exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext png -ext jpg -ext webp "%TARGET_DIR%" echo. echo 执行完毕,按任意键关闭 pause >nul
|
【图片校验】win_image_check.bat
1 2 3 4 5 6 7
| @echo off set "TARGET_DIR=%USERPROFILE%\xxx\xxx" echo ===== 图片:读取 XMP-dc:Subject ===== exiftool -XMP-dc:Subject -ext png -ext jpg -ext webp "%TARGET_DIR%" echo. echo 查询完毕,按任意键关闭 pause >nul
|
win_image_check_missing.bat(图片校验,导出缺失清单)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @echo off set "TARGET_DIR=%USERPROFILE%\Documents\ec\product\AddIPTC" set "OUTPUT_FILE=%TARGET_DIR%\missing_image_tag_list.txt"
echo ===== 图片:查找缺失 contains-synthetic-performer 的文件 ===== echo 清单输出路径:%OUTPUT_FILE%
rem 清空旧文档 echo. > "%OUTPUT_FILE%"
exiftool -filename -ext png -ext jpg -ext webp ^ -if "not $XMP-dc:Subject =~ /contains-synthetic-performer/" ^ -s3 "%TARGET_DIR%" >> "%OUTPUT_FILE%"
echo. echo ============================================= echo 检索完成!缺失标签列表已保存 echo 文件位置:%OUTPUT_FILE% pause >nul
|
视频
【视频写入】win_video_add.bat
1 2 3 4 5 6 7
| @echo off set "TARGET_DIR=%USERPROFILE%\xxx\xxx" echo ===== 视频:添加 contains-synthetic-performer 标签 ===== exiftool -XMP-dc:Subject+="contains-synthetic-performer" -overwrite_original -ext mp4 -ext mov -ext webm -ext mkv "%TARGET_DIR%" echo. echo 执行完毕,按任意键关闭 pause >nul
|
【视频校验】win_video_check.bat
1 2 3 4 5 6 7
| @echo off set "TARGET_DIR=%USERPROFILE%\xxx\xxx" echo ===== 视频:读取 XMP-dc:Subject ===== exiftool -XMP-dc:Subject -ext mp4 -ext mov -ext webm -ext mkv "%TARGET_DIR%" echo. echo 查询完毕,按任意键关闭 pause >nul
|
win_video_check_missing.bat(视频校验,导出缺失清单)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @echo off set "TARGET_DIR=%USERPROFILE%\Documents\ec\product\AddIPTC" set "OUTPUT_FILE=%TARGET_DIR%\missing_video_tag_list.txt"
echo ===== 视频:查找缺失 contains-synthetic-performer 的文件 ===== echo 清单输出路径:%OUTPUT_FILE%
echo. > "%OUTPUT_FILE%"
exiftool -filename -ext mp4 -ext mov -ext webm -ext mkv ^ -if "not $XMP-dc:Subject =~ /contains-synthetic-performer/" ^ -s3 "%TARGET_DIR%" >> "%OUTPUT_FILE%"
echo. echo ============================================= echo 检索完成!缺失标签列表已保存 echo 文件位置:%OUTPUT_FILE% pause >nul
|
注意
WebP:新版 ExifTool 才完整支持 WebP 写入 XMP,建议升级 ExifTool 到最新版
视频兼容性重点
MP4、MOV 原生支持内嵌 XMP;
MKV、WebM 绝大多数不能内嵌 XMP,exiftool 默认会生成 .xmp 附属文件,不会修改视频本体;
如果不想生成 sidecar 文件,无法对这类容器写入内置元数据,属于格式限制。
-overwrite_original 会自动生成 _original 备份原文件,方便出错恢复;不需要备份可以移除该参数。
Windows:下载 ExifTool,解压后把 exiftool.exe 放到系统 PATH,或者和 bat 脚本放在同一文件夹。
参数说明
-s3:仅输出纯文件路径,无多余文字,txt 干净整洁
-if ‘not $XMP-dc:Subject =~ /关键词/‘ 正则匹配筛选
清单生成在目标文件夹 AddIPTC 内
如果 txt 是空文件 = 所有文件都成功打上标签
⚠️重要提醒(视频)
MKV / WebM 无法内嵌 XMP,只能生成附属 xmp 文件;
这类文件执行写入后,本体元数据不会变化,校验脚本会判定为缺失标签,属于格式限制。