用 ffmpeg 给视频写标签:title、comment、封面、章节全塞进去
前面那篇讲怎么"读"视频的元数据,这篇讲"写"。很多人下完视频,文件名是 abc_123.mp4,资源管理器里啥信息没有;或者想给成品写个标题、塞张封面、加章节跳转,全靠剪辑软件太重。其实 ffmpeg 一行就能写。
最基础的标签
ffmpeg -i in.mp4 -c copy -metadata title="2024年会全程" -metadata artist="行政部" -metadata comment="内部留存" out.mp4
-c copy 不重编码,秒过。-metadata 可以塞任意键值,常见的 title/artist/album/comment/date 播放器都认。
坑一:MP4 和 MKV 的键名不一样
MP4 用 title,MKV 也认 title 但更爱 TITLE?不,MKV 用 title 也行,但章节等走不同机制。最稳的是同一封装内测试,别假设跨封装通用。我一般 mp4 写 title,mkv 写 title + DESCRIPTION。
塞封面进去
ffmpeg -i in.mp4 -i cover.jpg -map 0 -map 1 -c copy -disposition:v:1 attached_pic out.mp4
-disposition:v:1 attached_pic 标记第二路(封面)为"附件图",资源管理器和播放器才会当成封面显示。漏了这步,图进去了但不当封面。
加章节(让进度条有节点)
章节写在 metadata 里用 ;CHAPTER 格式,或者用 chapter 输入。最省事的是先做个章节文件 chapters.txt:
;FFMETADATA1
[CHAPTER]
TIMEBASE=1/1
START=0
END=120
title=开场
[CHAPTER]
TIMEBASE=1/1
START=120
END=600
title=主体
然后:
ffmpeg -i in.mp4 -i chapters.txt -map_metadata 1 -c copy out.mp4
-map_metadata 1 把章节文件的元数据并进去。播放器拖进度条就能看到"开场/主体"节点。
坑二:某些播放器只读 ID3/MP4 原子
VLC 基本都认,但 Windows 资源管理器对 MP4 的 comment 支持时好时坏。要稳就写 title 和 artist,这俩最通用。
批量
一文件夹视频,按文件名规则写 title,Python 跑 subprocess 循环即可(套路见后面 Python 包 ffmpeg 那篇)。别用 -map_metadata 去覆盖掉原有的,先 ffprobe 看看原来有没有,免得把别人写好的章节洗掉。