如何检测 AI 生成视频?容器元数据、SEI marker 与帧水印逐层排查

判断一段视频是不是 AI 生成的,光盯着画面看不出名堂——Sora、可灵、Veo 这代模型的画面质量已经过了"一眼假"的阶段。真正有效的入手点在文件内部:视频文件从容器到码流有好几层可以藏来源信息的地方,生成平台或主动或被监管要求地在里面留了痕迹。这篇按从外到内的顺序,把每一层怎么查讲清楚。

第零步:搞到原始文件,这一步决定一切

先理解转码对证据的破坏有多彻底。你把视频发到社交平台,平台会用自己的编码器重新压制一遍:码流换成平台的 H.264/H.265 参数,容器重新封装,encoder 字段变成平台转码集群的标识,原文件的工具字段、AIGC 标签、C2PA 全部消失。录屏更不用说——那是对着屏幕重新生成了一个无关的新文件。

所以最理想的检测样本是从生成平台直接下载、没经过任何转手的 MP4/MOV。微信里转出来的、抖音上保存的,能查到东西的概率会低得多(不是零——帧水印有时还在,后面会说)。

第一层:容器元数据(moov → udta → meta → ilst)

MP4/MOV 的元数据放在 box 树的 ilst 列表里,有两种键:iTunes 风格的四字符键(©too 编码工具、©swr 软件)和 keys box 配套的字符串键(encodertoolsoftware)。检查这几个键的值是否命中已知 AI 工具名。一个实际例子:部分 Veo 导出的视频,©too 的值就是一个单词 "Google"——平平无奇,但正常相机和剪辑软件不会这么写。

国产平台的 AIGC 隐式标识

这层有个中国特色的可靠线索。《人工智能生成合成内容标识办法》(2025 年 9 月 1 日起施行)要求生成平台在文件中加入显式和隐式标识,隐式标识落到 MP4 上,就是 ilst 里一个键名为 AIGC 的条目,值是 JSON:

{"Label":"1","ProduceID":"...","ContentProducer":"001191330106MA2CFLDG4R10001"}

Label"1" 即声明 AI 生成;ContentProducer 是生产者注册编码,可以反查平台——上面这串编码对应通义万相(Wan)。这套机制让合规的国产平台视频反而比海外平台更好溯源。

第二层:码流里的 SEI marker

再往里一层是视频码流本身。H.264/H.265 允许在码流中插入 SEI(补充增强信息)单元,部分平台在里面留了 ASCII 工具标记。对 mdat box 的前 1MB 做字节扫描,可能找到这些字符串:kling-aisorarunwaypika-labsluma-aihailuopixversevidu-aigenmohaiper

SEI 的价值在于它的位置:嵌在码流里而不是容器里。"重新封装但不重新编码"的操作(比如用 ffmpeg -c copy 把 MP4 转成 MOV)会换掉全部容器元数据,但 SEI 原封不动。当然,真转码(重新编码)还是会把它抹掉。

第三层:C2PA / Content Credentials

Sora 等平台的部分导出带 C2PA manifest(JUMBF 容器,存放在 MP4 的 uuid box 中,一般在文件头部区域)。浏览器版的做法是扫描文件前 2MB,找 c2padigitalSourceTypeclaim_generatorcontentauth 这些特征文本,再对命中区域做工具名匹配和来源类型判断:trainedAlgorithmicMedia 记高置信度。注意这是快速扫描而非签名验证,区别在 C2PA 文章里有完整说明。

第四层:文件名和帧水印

文件名是最弱的信号——谁都能改——但默认下载名确实带信息,作为辅助线索记低置信度。

容器和码流都没命中时,最后一招是看画面本身的水印,分两种:

抽帧依赖 ffmpeg.wasm,页面采取懒加载:只有元数据层全部落空、确实需要看帧时才下载和初始化它,所以多数检测在元数据层就结束了,很快。

结果怎么读

有原始视频文件的话,拖进来逐层扫一遍,全程本地处理

开始检测 →

常见问题

AI 生成视频一定能检测出来吗?

不能保证。检测依赖原始文件里保留的 C2PA、容器元数据、SEI marker、文件名或帧水印。经过社交平台转码、录屏、剪辑软件重新导出后,容器层信号基本会被洗掉;SEI 和帧水印能多扛一些处理,但也不是不可摧毁。

为什么一定要拿原始视频文件?

因为转码是毁灭性的。社交平台收到视频后会用自己的编码器重新压制:新的码流、新的容器、新的 encoder 字段,原文件的 ©too、AIGC 标签、C2PA 全部被替换或丢弃。从生成平台直接下载的文件和从微信里转出来的文件,可检测性是两个世界。

检测时视频会上传到服务器吗?

不会。文件在浏览器本地读取:容器和码流扫描直接在内存里做,需要抽帧时才懒加载 ffmpeg.wasm,在本机解码几帧做水印分析。整个过程没有任何字节离开你的电脑。

什么是 SEI marker?为什么它比容器元数据更难洗掉?

SEI(Supplemental Enhancement Information)是 H.264/H.265 码流内部的附加信息单元,部分平台在里面写入了工具标识(如 kling-ai、pika-labs)。它嵌在视频码流里而不是容器里,所以只换容器不重新编码的操作(如 MP4 转 MOV)动不了它;但重新编码会把它彻底抹掉。

浏览器版的 C2PA 检测和完整验证一样吗?

不一样。浏览器版扫描容器中的 C2PA/JUMBF 来源文本(digitalSourceType、claim_generator 等)并匹配已知工具,不校验签名链和证书链。它回答'有没有 AI 来源声明',不出具'记录可信且未被篡改'的结论,后者请用 c2patool 做完整验证。