You need to enable JavaScript to run this app.
文档中心
视频点播

视频点播

复制全文
视频 AI 应用
精细化字幕擦除
复制全文
精细化字幕擦除

火山引擎视频点播针对视频字幕提供精细化检测与擦除功能,实现高质量无痕擦除效果,最大程度还原视频画面。该功能支持擦除多语言字幕,还支持通过框选字幕位置进行擦除操作,避免误擦除,适用于短剧二次创作、教学视频制作、海外内容本地化等多种场景。本文为您详细介绍如何通过视频点播 OpenAPI 实现精细化字幕擦除。

优势特性

  • 高帧率 OCR 字幕检测:依托火山引擎高帧率 OCR 字幕检测算法,精准识别并定位短剧中的字幕内容。该技术针对短剧场景专门优化,不仅能准确区分需要擦除的字幕与需保留的剧情文本(剧情提示信息、剧名以及文字贴纸等),还采用高帧率抽帧确保无遗漏检测,为后续擦除奠定基础。
  • 字幕擦除区域图像修复:在图像修复环节,采用自主研发的 AIGC 算法,结合时序分析与多帧联合处理,智能重建擦除区域的画面。算法通过光流计算和特征匹配保持帧间稳定性,并运用深度学习生成逼真纹理,使修复后的画面与原始视频无缝融合,几乎看不出修改痕迹,实现高质量的字幕擦除效果。

应用场景

  • 短剧、出海短剧、电视剧
    • 二次创作:短剧、出海短剧或长剧客户需对视频进行混剪或二次创作时,可去除原视频中的字幕,以便依据自身创意添加新的字幕或音频,使视频内容更契合新的主题与风格。
    • 翻译剧:短剧客户需要将短剧在海外播放时,可先擦除原视频中的中文字幕,再添加准确、恰当的外文字幕,以助力不同语言背景的观众理解视频内容。同理,在引入海外短剧时,需擦除外文字幕并替换为中文字幕。
  • 教育与培训
    • 教学资源制作:教育工作者在制作教学视频过程中,可能会引用带有字幕的视频素材,然而这些字幕可能与教学内容不完全契合,甚至会对学生产生干扰。擦除原字幕并添加符合教学需求的字幕,有助于教学视频更为精准、清晰地传播知识。
    • 语言学习:在编制语言学习资料时,为使学习者更有效地开展听力训练、口语模仿等练习,可去除视频中的字幕,营造无字幕的语言环境,以提升学习者的语言能力。
  • 广告与营销
    • 广告制作:在制作广告视频时,为凸显产品或品牌信息,可去除原视频里的无关字幕,并重新设计与广告风格及宣传重点相匹配的字幕,从而增强广告的视觉冲击力与信息传递效能。
    • 多平台投放:在不同平台投放广告时,可依据平台特性与受众需求对字幕进行调整。擦除原有字幕并制作适配各平台的字幕,可增强广告的适应性并提升传播效果。

擦除效果示例

无误擦、无漏擦、高质量擦除效果


能力与限制

项目

说明

支持擦除的字幕

字幕的样式对擦除效果影响很大,白色、无黑色阴影、大小合适、非花字、横向排列的字幕更易于擦除。

不适用的字幕

竖向排列的字幕、超大字幕、透明度高的字幕,不适合用本功能处理。

智能保护的内容

算法会尽量保护非字幕的文本,比如画面里的场景文字、备案信息、花字、地点信息、文字水印、剧情提示、人物提示、文字贴纸等。

输出视频分辨率

输出视频的分辨率与输入视频的分辨率保持一致。输入视频的分辨率大于 1080p 时,则默认按照 1080p 输出。

计费说明

精细化字幕擦除功能按实际输出视频时长计费。我们提供两种使用方式,其计费价格有所不同:

使用方式

价格(元/分钟)

适用场景

通过 Aideo Agent

1

推荐用于快速体验、效果评测轻量级的字幕擦除任务。

通过 StartExecution 接口

4

推荐用于程序化、大批量的字幕擦除任务,适合深度集成到您的生产工作流中。

前提条件

通过 Agent 快速体验

Aideo Agent 是火山引擎提供的一款视频 AI 应用智能体。您可以通过 Aideo Agent 快速、直观地体验字幕擦除的效果,或处理少量的视频任务。您无需编写任何代码,只需通过自然语言对话即可完成操作。关于 Aideo Agent 的详细介绍、开通方式和使用方法,请参见 Aideo Agent 快速开始

注意:当前 Aideo Agent 暂不支持直接在 Agent 对话框预览擦除字幕后的视频。您需要按以下步骤查看产物:

  1. 在 Agent 的输出结果中,单击复制分析结果
    Image
    您将得到包含产物文件信息的 JSON 数据,示例如下:

    {
      "Duration": 89.2,
      "File": {
        "Size": "115129306",
        "FileName": "bcb1a7090d6243739d398a133984b3de"
      }
    }
    
  2. 从复制的数据中,获取 File.FileName字段的值(如上述示例中的 bcb1a7090d6243739d398a133984b3de 后,进行以下操作:
    Image

    1. 前往视频点播控制台的视频管理页面。
    2. 切换到 DirectUrl 模式页签。
    3. 在搜索框中输入获取到的 FileName,即可找到处理完成的视频。
    4. 单击生成访问地址,可获取视频的播放链接。

API 快速入门(竖屏短剧字幕擦除)

以下步骤将指导您以最少的配置,快速实现针对中英文字幕竖屏短剧场景的字幕自动检测与擦除。

步骤 1:提交字幕擦除任务

调用 StartExecution 接口提交字幕擦除任务。以下为任务的核心参数配置。关于完整的请求参数列表和详细说明,请参见 StartExecution API 参考

  • Input: 指定输入文件。
    • Type: 设置为 VidDirectUrl
    • Vid / DirectUrl: 提供待处理文件的 Vid 或 FileName 信息。
  • Operation.Task: 定义要执行的任务。
    • Type: 必须设置为 Erase,表示执行字幕擦除任务。
    • Erase.Mode: 设置为 Auto(自动擦除模式),系统将启用 OCR 识别,并依据检测结果进行擦除操作。
    • Erase.Auto.Type:设置为 Subtitle,表示仅擦除字幕。
    • Erase.Auto.SubtitleFilter:设为空 JSON 对象 {}
    • Erase.NewVid:设置为 true,表示为擦除产物生成 Vid。

此配置下,系统会自动识别并擦除满足以下条件的字幕:

  • 位置:位于视频画面下方 50% 以内,且在横向偏中央的位置。
  • 大小:文字竖向高度在视频高度的 1%~10% 之间。
  • 颜色:白色。

请求示例:

说明

以下 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,可用于后续查询任务结果。

步骤 2:获取任务结果

任务提交后,系统将在后台进行异步处理。您可以通过以下任一方式获取结果:

  • 主动查询:调用 GetExecution 接口,并传入步骤 1 中获取的 RunId 来获取任务结果。

    GET https://vod.volcengineapi.com?Action=GetExecution&Version=2025-01-01&RunId=hb:ebd05bee1f3873***f7316c742b5f
    
  • 事件通知

    1. 参考事件通知概述文档,配置一个用于接收回调的服务地址。在订阅事件时,勾选媒体处理任务执行完成事件
    2. 当任务完成时,您的服务将收到一个 EventTypeExecutionComplete 的 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
                  }
                ]
              }
            ]
          }
        }
      }
    }
  }
}

步骤 3:获取产物 URL

步骤 2:获取任务结果中,您已经获取到了擦除产物的 Vid(仅当您在请求中设置了 NewVid: true 时返回)和 FileName。接下来,您需要将其转换为公网可访问的 URL,以便于播放或下载。

说明

前提条件:在获取文件的公网 URL 之前,您必须为产物所在的点播空间添加并配置一个加速域名。所有 URL 都将基于此域名生成。

方式 1:调用 GetPlayInfo 接口

调用 GetPlayInfo 接口,传入您获取到的 Vid。成功调用后,系统会在响应体 Result.PlayInfoList 中返回播放 URL。

方式 2:基于 FileName 手动拼接 URL

一个基础的访问 URL 由以下部分组成:[Protocol]://[PlaybackDomain]/[FileName]

  • [Protocol]:通常为 httpshttp。取决于您是否配置 SSL 证书
  • [PlaybackDomain]:您在点播控制台配置的加速域名。
  • [FileName]:您从任务结果中获取的产物 FileName

拼接示例:假设您的加速域名为 play.example.com,获取到的文件 FileNamevideo.mp4,那么拼接后的基础 URL 为:https://play.example.com/video.mp4

说明

为了防止资源被盗链,视频点播支持 URL 鉴权功能。如果您在视频点播控制台开启了 URL 鉴权,仅拼接基础 URL 还无法直接访问,您必须为其附加一个动态计算的鉴权参数(如 auth_key)。

  • 如何生成鉴权参数:URL 鉴权需要遵循一套严格的签名算法。详细的计算方法和不同语言的实现示例,请参见 URL 鉴权概述
  • 附带鉴权的完整 URL 示例https://play.example.com/video.mp4?auth_key=1732529334-0-0-a1b2c3d4e5f6...

API 进阶使用

擦除字幕及其他渲染文本

Auto 模式下,将 Type 设置为 Subtitle 仅会擦除被识别为“字幕”的文本。如果视频中除了字幕,还包含其他渲染文本(如文字水印、视频标题等),而您希望将它们一并擦除,则需要调整擦除类型,将 Type 参数的值从 Subtitle 修改为 Text

示例:擦除字幕及其他渲染文本

{
    "Input": { ... },
    "Operation": {
        "Type": "Task",
        "Task": {
            "Type": "Erase",
            "Erase": {
                "Mode": "Auto",
                "Auto": {
                    "Type": "Text" // 修改此处为 Text
                }
            }
        }
    }
}

以上参数配置的效果展示如下:


指定擦除区域(框选擦除)

为实现更精确的擦除控制,您可以通过指定一个或多个矩形区域来限定擦除操作的范围。ManualAuto 两种模式均支持指定框选区域,但工作逻辑有所不同。

Manual 模式下指定擦除区域

Manual 模式下,系统会直接擦除您所指定区域内的所有符合基本特征(如白色)的文本,而不会进行 OCR 识别。此模式主要适用于以下场景:

  • 处理小语种字幕:当 Auto 模式的 OCR 模型不支持视频中的语言时,可直接框选字幕区域进行擦除。
  • 避免误擦:当 Auto 模式可能错误地擦除某些非字幕文本(如场景内的文字)时,通过 Manual 模式可以精确限定擦除范围。
  • 强制擦除:当 Auto 模式未能识别并擦除某些文本时,可使用此模式进行强制处理。

配置方法
  1. Erase.Mode 设置为 Manual
  2. Erase.Manual.Locations 参数中,定义一个或多个矩形擦除区域。

每个区域的位置通过其左上角和右下角的坐标来定义,所有坐标值均为相对于视频总宽高的比例(取值范围 0.0 ~ 1.0)。假设您想要将下图橙色区域作为擦除区域,则参数设置如下:

  • TopLeftX: 矩形左上角的 X 坐标(图中 b1)。
  • TopLeftY: 矩形左上角的 Y 坐标(图中 a1)。
  • BottomRightX: 矩形右下角的 X 坐标(图中 b2)。
  • BottomRightY: 矩形右下角的 Y 坐标(图中 a2)。

Image

示例:擦除视频下方特定区域内的所有文本

以下示例演示了如何配置 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 模式下指定擦除区域

Auto 模式下,系统会首先通过 OCR 技术识别视频画面中的所有文本。当您同时指定了擦除区域时,系统仅会擦除那些被识别到且位置完全落入您指定区域内的文本。

配置方法
  1. Erase.Mode 设置为 Auto
  2. 根据需求设置 Erase.Auto.TypeSubtitle(仅字幕)或 Text(所有文本)。
  3. Erase.Auto.Locations 参数中,定义一个或多个矩形擦除区域。

已知问题

请尽量确保框选区域能够完整包含需要擦除的文字,否则可能出现以下问题:

框内部分文字无法擦除干净

擦除效果轻微溢出到框选区域之外

Image

Image

示例:仅擦除屏幕下半区域的字幕

以下示例演示了如何配置 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(跳过选中片段,擦除其余部分)操作。

示例 1:仅擦除视频 10 - 60 秒之间的字幕

{
    "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
                            }
                        ]
                    }
                }
            }
        }
    }
}

示例 2:跳过片头(前 15 秒),仅擦除正片部分的字幕

{
    "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 模式 + 框选:如果 Auto 模式的 OCR 识别效果本身不理想(例如,无法识别小语种字幕),您可以切换到 Manual 模式。此模式会直接、强制性地擦除框内所有符合基本特征的文本,不依赖 OCR 识别。

关于如何使用框选功能,请参见指定擦除区域(框选擦除)

最近更新时间:2026.03.19 10:39:51
这个页面对您有帮助吗?
有用
有用
无用
无用