火山引擎视频点播针对视频字幕提供精细化检测与擦除功能,实现高质量无痕擦除效果,最大程度还原视频画面。该功能支持擦除多语言字幕,还支持通过框选字幕位置进行擦除操作,避免误擦除,适用于短剧二次创作、教学视频制作、海外内容本地化等多种场景。本文为您详细介绍如何通过视频点播 OpenAPI 实现精细化字幕擦除。
无误擦、无漏擦、高质量擦除效果
项目 | 说明 |
|---|---|
支持擦除的字幕 | 字幕的样式对擦除效果影响很大,白色、无黑色阴影、大小合适、非花字、横向排列的字幕更易于擦除。 |
不适用的字幕 | 竖向排列的字幕、超大字幕、透明度高的字幕,不适合用本功能处理。 |
智能保护的内容 | 算法会尽量保护非字幕的文本,比如画面里的场景文字、备案信息、花字、地点信息、文字水印、剧情提示、人物提示、文字贴纸等。 |
输出视频分辨率 | 输出视频的分辨率与输入视频的分辨率保持一致。输入视频的分辨率大于 1080p 时,则默认按照 1080p 输出。 |
精细化字幕擦除功能按实际输出视频时长计费。我们提供两种使用方式,其计费价格有所不同:
使用方式 | 价格(元/分钟) | 适用场景 |
|---|---|---|
通过 Aideo Agent | 1 | 推荐用于快速体验、效果评测和轻量级的字幕擦除任务。 |
通过 | 4 | 推荐用于程序化、大批量的字幕擦除任务,适合深度集成到您的生产工作流中。 |
Aideo Agent 是火山引擎提供的一款视频 AI 应用智能体。您可以通过 Aideo Agent 快速、直观地体验字幕擦除的效果,或处理少量的视频任务。您无需编写任何代码,只需通过自然语言对话即可完成操作。关于 Aideo Agent 的详细介绍、开通方式和使用方法,请参见 Aideo Agent 快速开始。
注意:当前 Aideo Agent 暂不支持直接在 Agent 对话框预览擦除字幕后的视频。您需要按以下步骤查看产物:
在 Agent 的输出结果中,单击复制分析结果。
您将得到包含产物文件信息的 JSON 数据,示例如下:
{ "Duration": 89.2, "File": { "Size": "115129306", "FileName": "bcb1a7090d6243739d398a133984b3de" } }
从复制的数据中,获取 File.FileName字段的值(如上述示例中的 bcb1a7090d6243739d398a133984b3de 后,进行以下操作:
以下步骤将指导您以最少的配置,快速实现针对中英文字幕竖屏短剧场景的字幕自动检测与擦除。
调用 StartExecution 接口提交字幕擦除任务。以下为任务的核心参数配置。关于完整的请求参数列表和详细说明,请参见 StartExecution API 参考。
Input: 指定输入文件。
Type: 设置为 Vid 或 DirectUrl。Vid / DirectUrl: 提供待处理文件的 Vid 或 FileName 信息。Operation.Task: 定义要执行的任务。
Type: 必须设置为 Erase,表示执行字幕擦除任务。Erase.Mode: 设置为 Auto(自动擦除模式),系统将启用 OCR 识别,并依据检测结果进行擦除操作。Erase.Auto.Type:设置为 Subtitle,表示仅擦除字幕。Erase.Auto.SubtitleFilter:设为空 JSON 对象 {}。Erase.NewVid:设置为 true,表示为擦除产物生成 Vid。此配置下,系统会自动识别并擦除满足以下条件的字幕:
请求示例:
说明
以下 HTTP 示例仅展示核心的业务参数,省略了 Authorization 请求头中的签名计算等鉴权细节。在实际发起请求前,请参考如何调用 OpenAPI 文档,了解如何在线测试接口、获取可运行的 curl 命令以及完整的 HTTP 请求构造方法与签名机制。
POST https://vod.volcengineapi.com?Action=StartExecution&Version=2025-01-01 { "Input": { "Type": "Vid", "Vid": "your_video_vid" }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Auto", "Auto": { "Type": "Subtitle", "SubtitleFilter":{} }, "WithEraseInfo": true, "NewVid": true } } } }
以上参数配置的效果展示如下:
RunId,可用于后续查询任务结果。任务提交后,系统将在后台进行异步处理。您可以通过以下任一方式获取结果:
主动查询:调用 GetExecution 接口,并传入步骤 1 中获取的 RunId 来获取任务结果。
GET https://vod.volcengineapi.com?Action=GetExecution&Version=2025-01-01&RunId=hb:ebd05bee1f3873***f7316c742b5f
事件通知:
EventType 为 ExecutionComplete 的 HTTP POST 请求。当返回结果中的 Status 字段值为 Success 时,表示任务已成功完成。您可以在 Output.Task.Erase 字段中找到擦除后的产物信息。以下为产物相关的核心返回字段:
{ "ResponseMetadata": { // ... 已省略通用元数据 }, "Result": { "RunId": "hb:e3eb1668d43fa761420ac95057****", "Status": "Success", // ... 已省略任务元数据、输入、操作等信息 "Output": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Duration": 57.099, "File": { "Size": "152295931", "FileName": "0b7c1420fee342e39792b847b8a****.mp4", "Vid": "v0ccfeg7007acsg***fog65ubr7niqng" }, "Info": { "Width": 1080, "Height": 1920, "Areas": [ { "Start": 0, "End": 57.08, "PixelRectangle": [ { "TopLeftX": 108, "TopLeftY": 960, "BottomRightX": 1067, "BottomRightY": 1919 } ] } ] } } } } } }
在步骤 2:获取任务结果中,您已经获取到了擦除产物的 Vid(仅当您在请求中设置了 NewVid: true 时返回)和 FileName。接下来,您需要将其转换为公网可访问的 URL,以便于播放或下载。
说明
前提条件:在获取文件的公网 URL 之前,您必须为产物所在的点播空间添加并配置一个加速域名。所有 URL 都将基于此域名生成。
调用 GetPlayInfo 接口,传入您获取到的 Vid。成功调用后,系统会在响应体 Result.PlayInfoList 中返回播放 URL。
一个基础的访问 URL 由以下部分组成:[Protocol]://[PlaybackDomain]/[FileName]
[Protocol]:通常为 https 或 http。取决于您是否配置 SSL 证书。[PlaybackDomain]:您在点播控制台配置的加速域名。[FileName]:您从任务结果中获取的产物 FileName。拼接示例:假设您的加速域名为 play.example.com,获取到的文件 FileName 为 video.mp4,那么拼接后的基础 URL 为:https://play.example.com/video.mp4
说明
为了防止资源被盗链,视频点播支持 URL 鉴权功能。如果您在视频点播控制台开启了 URL 鉴权,仅拼接基础 URL 还无法直接访问,您必须为其附加一个动态计算的鉴权参数(如 auth_key)。
https://play.example.com/video.mp4?auth_key=1732529334-0-0-a1b2c3d4e5f6...在 Auto 模式下,将 Type 设置为 Subtitle 仅会擦除被识别为“字幕”的文本。如果视频中除了字幕,还包含其他渲染文本(如文字水印、视频标题等),而您希望将它们一并擦除,则需要调整擦除类型,将 Type 参数的值从 Subtitle 修改为 Text。
{ "Input": { ... }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Auto", "Auto": { "Type": "Text" // 修改此处为 Text } } } } }
以上参数配置的效果展示如下:
为实现更精确的擦除控制,您可以通过指定一个或多个矩形区域来限定擦除操作的范围。Manual 和 Auto 两种模式均支持指定框选区域,但工作逻辑有所不同。
在 Manual 模式下,系统会直接擦除您所指定区域内的所有符合基本特征(如白色)的文本,而不会进行 OCR 识别。此模式主要适用于以下场景:
Auto 模式的 OCR 模型不支持视频中的语言时,可直接框选字幕区域进行擦除。Auto 模式可能错误地擦除某些非字幕文本(如场景内的文字)时,通过 Manual 模式可以精确限定擦除范围。Auto 模式未能识别并擦除某些文本时,可使用此模式进行强制处理。Erase.Mode 设置为 Manual。Erase.Manual.Locations 参数中,定义一个或多个矩形擦除区域。每个区域的位置通过其左上角和右下角的坐标来定义,所有坐标值均为相对于视频总宽高的比例(取值范围 0.0 ~ 1.0)。假设您想要将下图橙色区域作为擦除区域,则参数设置如下:
TopLeftX: 矩形左上角的 X 坐标(图中 b1)。TopLeftY: 矩形左上角的 Y 坐标(图中 a1)。BottomRightX: 矩形右下角的 X 坐标(图中 b2)。BottomRightY: 矩形右下角的 Y 坐标(图中 a2)。以下示例演示了如何配置 API,以擦除视频画面下方 15% 高度、左右边距为 10% 的区域内的所有文本。
{ "Input": { "Type": "Vid", "Vid": "your_video_vid" }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Manual", "Manual": { "Locations": [ { "RatioLocation": { "TopLeftX": 0.10, "TopLeftY": 0.85, "BottomRightX": 0.90, "BottomRightY": 0.95 } } ] } } } } }
以上参数配置的效果展示如下:
在 Auto 模式下,系统会首先通过 OCR 技术识别视频画面中的所有文本。当您同时指定了擦除区域时,系统仅会擦除那些被识别到且位置完全落入您指定区域内的文本。
Erase.Mode 设置为 Auto。Erase.Auto.Type 为 Subtitle(仅字幕)或 Text(所有文本)。Erase.Auto.Locations 参数中,定义一个或多个矩形擦除区域。请尽量确保框选区域能够完整包含需要擦除的文字,否则可能出现以下问题:
框内部分文字无法擦除干净 | 擦除效果轻微溢出到框选区域之外 |
|---|---|
以下示例演示了如何配置 API,以擦除视频画面下半部分(Y 坐标 0.5-1.0)内 OCR 识别到的所有字幕。
{ "Input": { "Type": "Vid", "Vid": "your_video_vid" }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Auto", "Auto": { "Type": "Subtitle", // 在 Auto 模式下新增 Locations 参数以指定擦除区域 "Locations": [ { "RatioLocation": { "TopLeftX": 0.0, "TopLeftY": 0.5, "BottomRightX": 1.0, "BottomRightY": 1.0 } } ] } } } } }
有时您可能只想擦除视频的某一部分(如正片部分),而保留另一部分(如片头、片尾)的字幕。可通过 EraseOption.ClipFilter 参数定义一个或多个时间片段,并指定对这些片段执行 Selected(仅擦除选中片段)或 Skip(跳过选中片段,擦除其余部分)操作。
{ "Input": { ... }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Auto", "Auto": { "Type": "Subtitle", "SubtitleFilter":{} }, "EraseOption": { "ClipFilter": { "Mode": "Selected", // 模式:选中 "Clips": [ { "Start": 10.0, "End": 60.0 } ] } } } } } }
{ "Input": { ... }, "Operation": { "Type": "Task", "Task": { "Type": "Erase", "Erase": { "Mode": "Auto", "Auto": { "Type": "Subtitle", "SubtitleFilter":{} }, "EraseOption": { "ClipFilter": { "Mode": "Skip", // 模式:跳过 "Clips": [ { "Start": 0.0, "End": 15.0 } ] } } } } } }
若 Auto 模式擦除了不想处理的文字(例如,误将场景内的招牌文字当作字幕擦除),建议您使用框选功能来限定擦除范围。根据具体情况,有两种操作方式:
Auto 模式的 OCR 识别效果本身不理想(例如,无法识别小语种字幕),您可以切换到 Manual 模式。此模式会直接、强制性地擦除框内所有符合基本特征的文本,不依赖 OCR 识别。关于如何使用框选功能,请参见指定擦除区域(框选擦除)。