看来 ffmpeg 错误地将密钥元数据复制到了 UserData atom,而 macOS 14 QuickTime 播放器或照片无法读取它。
例如:input.mov
macOS 14 QuickTime 播放器和照片显示的作者、标题、描述、关键字、GPS、日期的 Keys 标签:
exiftool -a -G1 -s -n -Keys:All input.mov
[Keys] Author : Author
[Keys] Description : Description
[Keys] Keywords : Keyword 1,Keyword 2
[Keys] UserRating : 3
[Keys] Title : Title
[Keys] GPSCoordinates : -36.6101 -66.91515 119.9
[Keys] CreationDate : 2001:01:01 12:00:00+02:00
.MP4
然后使用 ffmpeg 的选项重新编码应该保存元数据:
ffmpeg -i input.mov -c:v libx265 -tag:v hvc1 -c:a aac -movflags use_metadata_tags -map_metadata 0 output.mp4
但 QuickTime 播放器和照片不再显示这些标签output.mp4
。
一种解决方法是使用 exiftool 修复错误的密钥元数据:
exiftool -m -overwrite_original -api LargeFileSupport=1 -Keys:All= -tagsFromFile @ -Keys:All output.mp4
https://exiftool.org/forum/index.php?topic=15418.msg82847#msg82847
因此看来 ffmpeg '-movflags use_metadata_tags' 错误地复制了这些密钥,而 '-map_metadata 0' 仅保留了 'QuickTime:CreateDate'。
问题:是否有选项可以使用 ffmpeg 正确保存 .mp4、.m4v 和 .mov 中的 Keys 元数据?