视频文件里藏了哪些"身份证"?聊聊视频元数据与 EXIF 信息
右键点一个视频文件,选择"属性 → 详细信息",你能看到分辨率、时长、帧率、编码格式……但视频文件里还藏着更多你不知道的"身份证信息"。拍摄设备、GPS 坐标、创建时间、甚至剪辑软件版本,都可能被写进了视频文件的元数据(Metadata)里。本文拆开视频文件的"身份证夹层"。
TL;DR:视频元数据分三层——容器层(MP4/MKV 头部信息)、编码层(H.264 的 SEI 数据)、文件系统层(EXIF/文件属性)。用 ffmpeg、exiftool 或 MediaInfo 可以查看、修改、甚至清除这些信息。上传视频前,务必检查元数据是否泄露了不该泄露的信息。
目录
一、视频元数据的三个"夹层"
视频文件的元数据不是存在一个地方,而是分布在三个层面:
video.mp4
├─ 文件系统层:创建时间、修改时间、文件大小(操作系统管)
├─ 容器层: MP4/MKV 头部字段(moov box 里的信息)
│ ├─ 时长、分辨率、码率
│ ├─ 旋转角度(手机拍的竖屏视频靠这个矫正)
│ ├─ 创建/修改时间戳
│ └─ 编码器名称、工具标识
└─ 编码层: H.264 SEI NAL 单元
├─ 编码参数(Profile/Level)
├─ 帧类型信息
└─ 自定义注释(部分设备会写 GPS)
最容易被忽略的是容器层的元数据——手机录的视频,MP4 的 moov box 里可能直接写着设备型号、GPS 坐标、拍摄时间。你用微信发出去,这些信息都跟着文件走了。
二、用什么工具查看元数据
MediaInfo(推荐):图形化界面,信息最全:
# 命令行版
mediainfo video.mp4
# 输出示例:
# Format: MPEG-4
# Codec ID: avc1
# Duration: 2 min 30 s
# Bit rate: 5 000 kb/s
# Width: 1 920 pixels
# Height: 1 080 pixels
# Rotation: 90° ← 手机拍的竖屏标记
# Encoded date: UTC 2026-07-15 08:30:00
# Tagged date: UTC 2026-07-15 08:30:00
ffmpeg / ffprobe:命令行极客首选:
# 查看所有元数据
ffprobe -show_format -show_streams video.mp4
# 只看关键信息
ffprobe -v quiet -print_format json -show_format video.mp4
exiftool:专门提取 EXIF/GPS 等嵌入式元数据:
exiftool video.mp4
# 会列出 GPSLatitude、GPSLongitude 等敏感字段
三、元数据里可能泄露什么
| 信息类别 | 示例字段 | 风险 |
|---|---|---|
| 位置信息 | GPSLatitude, GPSLongitude | 暴露家庭/公司地址 |
| 设备信息 | Make, Model, Software | 暴露拍摄设备型号 |
| 时间信息 | CreateDate, ModifyDate | 暴露活动时间线 |
| 作者信息 | Artist, Copyright | 暴露身份 |
| 工具信息 | Encoder, WritingApplication | 暴露剪辑软件版本(可能有漏洞) |
一个真实案例:有人把原视频直接发到网上,结果 exiftool 一查,GPS 精确到了自家卧室窗户的经纬度。所以上传视频前,务必检查并清除敏感元数据。
四、如何清除/修改元数据
方法一:ffmpeg 重封装(最安全,无损画质)
# 用 -map_metadata 清空元数据后重新封装
ffmpeg -i input.mp4 -map_metadata -1 -c copy output.mp4
-map_metadata -1 的意思是"不复制任何元数据到输出文件"。视频流和音频流用 -c copy 原样保留,画质完全不变,只是元数据被清空了。
方法二:exiftool 删除指定字段
# 删除 GPS 信息
exiftool -gps:all= video.mp4
# 删除所有元数据(注意:会改原文件,建议先备份)
exiftool -all= video.mp4
方法三:修改元数据
# 修改标题和作者
ffmpeg -i input.mp4 -metadata title="新标题" -metadata author="Anon" -c copy output.mp4
五、不同容器格式的元数据差异
| 容器 | 元数据存储位置 | 特点 |
|---|---|---|
| MP4 | moov box(通常在文件头) | 支持标准字段 + 自定义 QuickTime 标签 |
| MKV | 文件头部 + 每个轨道可带标签 | 最灵活,几乎什么都能存 |
| WebM | 基于 MKV 的子集 | 精简,不支持复杂标签 |
| FLV | script tag(onMetaData) | 字段较少,主要用于直播 |
MP4 的 moov box 如果在文件末尾(某些录制工具会这样写),会导致"不下载完整个文件就读不到元数据"。可以用 ffmpeg 的 -movflags +faststart 把 moov 移到文件头:
ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4
六、合规与温馨提示
技术是中性的,用法见人心。我们强烈建议:
- 上传视频前检查并清除个人敏感元数据,保护自己的隐私;
- 不利用元数据追踪、定位他人,尊重他人隐私权;
- 仅下载你自己拥有版权或平台明确允许保存的内容。
视频元数据就像文件的"隐形身份证"。它本身没有好坏,但携带的信息可能远超你想象。下次发视频给别人之前,花 5 秒跑一遍 ffmpeg -map_metadata -1,就能安心得多。如果你用 exiftool 查到了什么意想不到的字段,欢迎在评论区分享。
本文由 VidDown 技术博客原创发布。VidDown 是一个免费、本地优先的在线视频解析与开发者工具站,支持多平台视频下载、格式转换、m3u8 合并等实用功能,所有数据处理均在本地完成,保护你的隐私。欢迎访问 www.viddown.cn 体验。