如何通过FFmpeg为MP4添加可在Windows资源管理器中显示的元数据(用于标记HEVC转码视频)
如何通过FFmpeg为MP4添加可在Windows资源管理器中显示的元数据(用于标记HEVC转码视频)
我完全懂你的痛点——FFmpeg的元数据设置经常和Windows资源管理器的显示逻辑不对付,明明ffprobe能看到,Explorer就是不买账。针对你要标记HEVC转码视频的需求,我有几个实用的方案:
核心思路:用Windows资源管理器能识别的元数据字段
Windows对MP4(HEVC常用容器)的元数据读取是基于QuickTime/ISO容器的特定标签,其中**「编码者(Encoded by)」**这个字段是完全能被识别的,刚好符合你用来标记转码视频的需求。
1. 转码时直接添加标记
如果你是在转码HEVC的同时添加元数据,用这条命令就可以:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a copy -metadata encoder="HEVC 已转码" output.mp4
-c:v libx265:指定用HEVC编码视频-crf 28:调整HEVC的质量(数值越小质量越高,28是比较均衡的选项)-c:a copy:直接复制原视频的音频流,节省时间-metadata encoder="HEVC 已转码":设置「编码者」字段,这个内容会直接显示在Windows资源管理器的对应列里
2. 给已转码的视频批量补加标记
如果已经转完一批视频,不想重新编码,用-c copy直接复制流修改元数据就行(速度极快):
ffmpeg -i input.mp4 -c copy -metadata encoder="HEVC 已转码" output.mp4
3. 验证标记是否生效
用FFmpeg验证:
ffprobe -v quiet -show_entries stream=encoder -of default=noprint_wrappers=1:nokey=1 output.mp4
执行后应该会输出你设置的文本(比如HEVC 已转码),说明元数据已经写入。
在Windows资源管理器中查看:
右键资源管理器的列标题→选择「编码者」,就能看到所有视频的标记状态了,转码过的会显示你设置的内容。
为什么之前的「copyright」字段不显示?
Windows资源管理器对MP4的元数据字段支持很挑剔,copyright这类字段需要FFmpeg严格映射到容器的特定标签才能被识别,你可以加上-movflags use_metadata_tags参数试试,但还是不如encoder字段直接好用:
ffmpeg -i input.mp4 -c copy -metadata copyright="HEVC 转码" -movflags use_metadata_tags output.mp4
额外注意事项
- 尽量用MP4容器:Windows对MKV的元数据支持有限,用MP4才能保证字段正常显示
- 批量处理:如果视频数量多,可以写个Windows批处理脚本(比如遍历文件夹里的MP4文件批量添加标记)
备注:内容来源于stack exchange,提问作者John Christofolakos
相关产品推荐
相关产品推荐

