AI MediaKit 的视频暗水印工具,可以在不影响视频画面视觉质量与完整性的前提下,将一串数字信息(如用户 ID、内容 ID)隐藏式地嵌入视频文件中。这项技术对于视频版权保护、内容泄露溯源、文件真实性校验等场景至关重要。即使视频经过压缩、转码、裁剪或录屏,嵌入的暗水印信息仍有很大概率被成功提取,为版权追踪和维权提供有力证据。
本篇开发指南将引导您:
- 快速上手,通过调用 API 为视频添加一个暗水印,并从处理后的视频中将其成功提取出来。
视频暗水印的核心流程包含“添加”和“提取”两个主要环节:
- 添加暗水印:将原始视频和一个自定义的数字串(水印内容)作为输入,经过算法处理,生成一个肉眼看不出差异、但已包含隐藏信息的新视频。
- 提取暗水印:将被泄露或盗播的视频作为输入,通过暗水印提取 API 进行分析,还原出当初嵌入的数字信息。如果同一视频被多次嵌入暗水印,本工具能够提取出所有的水印信息。
本节将演示如何通过 API 调用,完成“为视频添加暗水印”及“从视频中提取暗水印”的完整流程。
- 获取访问凭证:在开始之前,您需要获取调用 API 所需的访问凭证(API Key)。请前往 AI MediaKit 控制台的 API Key 管理页面 创建并复制您的 API Key。
- 准备视频文件:准备一个视频文件,并将其上传至公网可访问的服务器或视频点播服务中,以获取可供 API 调用的 URL。为方便您快速测试,本文后续步骤的示例代码中提供了一个可直接使用的演示视频 URL。
添加并提取暗水印是一个包含两个异步任务的流程,核心步骤如下:
- 调用 POST /api/v1/tools/add-video-invisible-watermark,提交一个暗水印添加任务。
- 轮询 GET /api/v1/tasks/{task_id} 直至任务完成,然后从响应的 result 字段中解析出已添加暗水印的视频 URL(video_url)。
- 调用 POST /api/v1/tools/extract-video-invisible-watermark 并传入上一步获得的视频 URL,提交一个暗水印提取任务。
- 轮询 GET /api/v1/tasks/{task_id} 查询最终任务状态。任务完成后,从 result 字段中获取提取出的水印内容(watermark_contents)。
首先,调用提交视频暗水印添加任务 API 来为一个视频嵌入您指定的数字信息。可直接复制以下 cURL 命令提交任务。本示例将数字串 "12345678901234567" 作为暗水印内容嵌入视频中。 说明
- 请将 {Your_API_Key} 替换为您的真实 API Key。
- video_url:示例中已提供可直接用于测试的演示视频 URL。您也可以将其替换为您自己的视频地址。
请求成功后,您会收到一个用于查询进度的 task_id(例如 amk-tool-add-video-invisible-watermark-1703200)。
接下来,您需要使用此 task_id 轮询查询任务信息 API。当任务状态(status)变为 completed 后,从响应的 result 字段中,找到并保存 video_url 的值。这个 URL 指向已成功嵌入暗水印的视频。成功完成的暗水印添加任务响应示例如下: 获取到已添加暗水印的视频 URL 后,调用提交视频暗水印提取任务 API 来解析其中隐藏的信息。使用您在上一步中获得的 video_url 替换下面 cURL 命令中的 video_url 值,然后提交请求。 说明
- 请将 {Your_API_Key} 替换为您的真实 API Key。
- 将 video_url 替换为您在第 1 步轮询结果中获得的、已添加暗水印的视频 URL。
请求成功后,您会收到一个新的 task_id(例如 amk-tool-extract-video-invisible-watermark-1703201),请保存此 ID 用于查询提取结果。
当任务成功完成后,您将收到如下响应。您可以在 result.watermark_contents 数组中找到提取出的暗水印内容。
将第 2 步提取到的水印内容("12345678901234567") 与第 1 步嵌入的水印内容进行比对。如果两者一致,即证明该视频的来源得到了成功校验。
在调用提交视频暗水印添加任务 API 时,您可以通过 watermark_level 参数来调整暗水印的强度。强度决定了暗水印的抗攻击性(抵抗视频压缩、转码、录屏等处理的能力)与画面影响程度的平衡。 - 抗攻击性越强:意味着水印在经过各种形式的二次处理后,越不容易丢失,越容易被成功提取。
- 画面影响程度:虽然暗水印在设计上是肉眼不可见的,但其本质仍是对视频像素数据的修改。强度越高,对原始画面的修改幅度也相对越大。
您可以根据业务场景,在以下强度等级中进行选择:
- normal:(默认值)标准强度。在画质与抗攻击性之间取得较好的平衡,适用于绝大多数场景。
- high:高强度。抗攻击性最强,能抵抗更强的视频处理(如高压缩比转码、多次录屏),但对画面的潜在影响也相对更大。
本章节介绍视频暗水印在真实业务场景中的典型应用流程与最佳实践,帮助您更有效地利用该功能保护您的数字资产。
在 AI 内容生成(AIGC)应用中,您不仅需要保护最终合成的成品,往往还需要追溯到构成该成品的具体原始素材。通过为素材和成品分别添加不同层级的暗水印,可以建立一个完整的版权追溯链路。
推荐流程:
- 素材级别水印:假设您通过 AI 生成了视频片段 A 和视频片段 B,可分别对这两个视频调用暗水印添加 API,嵌入第一层水印(使用 high 强度),用于标识每个原始素材。
- 内容拼接:将已添加了第一层水印的视频 A 和视频 B 进行拼接,生成最终成品视频 C。
- 成品级别水印:再次调用暗水印添加 API,为最终视频 C 嵌入第二层水印(使用 normal 强度)。这一层水印用于标识最终分发的内容(如标记分发渠道、购买用户 ID 等)。
最终效果:
- 如果仅视频 A 或 B 被泄露,您可以从泄露的片段中提取出第一层水印,从而精确定位到是哪个原始素材被泄露。
- 如果最终视频 C 被盗播,您可以从盗播视频中提取出全部两层水印,既能追溯到最终成品的流向,也能关联到其所包含的原始素材信息。
说明
先处理,后水印:为确保暗水印的抗攻击性和提取成功率,强烈建议您在添加暗水印之前完成其他视频处理操作(如画质增强、字幕擦除、剪辑、拼接等)。对已包含暗水印的视频进行再次编辑,可能会破坏已嵌入的水印信息,导致其无法被正常提取。
对于版权价值极高、防盗版需求强的核心视频内容,为应对二次压缩、录屏翻录等恶意破坏行为,可以通过叠加两层不同强度的暗水印来最大化提升其抗攻击性。
推荐流程:
- 第一层水印:针对原始视频,调用暗水印添加 API 嵌入第一层水印(例如,使用 high 强度),产出视频 A。
- 第二层水印:再针对视频 A,调用暗水印添加 API 嵌入第二层水印(需要使用与第一层不同的强度,例如 normal)。
AI MediaKit 的暗水印提取 API 能够自动识别并解析出视频中存在的双层水印。
最终效果:
- 增强抗攻击性:使用不同强度的水印,相当于应用了不同的算法和嵌入策略。这使得盗版者即使通过某种处理手段侥幸破坏了其中一层水印,另一层水印仍有很大概率得以保留并被成功提取。
- 成本与收益平衡:从攻防成本和技术效果的角度来看,叠加两层暗水印通常已能满足绝大多数高安全场景的需求,是一种性价比较高的保护方案。