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 快速开始

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

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

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

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

  • Input: 指定输入文件。
    • Type: 设置为 VidDirectUrl
    • Vid / DirectUrl: 提供待处理文件的 Vid 或 FileName 信息。
  • Operation.Task: 定义要执行的任务。
    • Type: 必须设置为 Erase,表示执行字幕擦除任务。
    • Erase.Mode: 设置为 Auto,表示采用自动擦除模式。
    • Erase.Auto.Type:设置为 Subtitle,表示仅擦除字幕。
    • Erase.Auto.SubtitleFilter:设为空 JSON 对象 {}
    • Erase.NewVid:设置为 true,表示为擦除产物生成 Vid。

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

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

请求示例:

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
                }
            }
        }
    }
}

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


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

此模式主要用于以下场景:

  • 处理小语种字幕:由于自动 OCR 模型主要针对中英文优化,直接框选字幕区域可以绕过OCR 识别,对区域内的所有白色字幕进行擦除。
  • 避免误擦除:当 Auto 模式可能误擦除部分非字幕文本时,通过框选可以精准限定擦除范围。

如何操作:设置 Erase.ModeManual,并通过 Erase.Manual.Locations 参数定义一个或多个擦除框的坐标。坐标值均为相对比例(0.0 ~ 1.0)。假设您想要将下图橙色区域作为擦除区域,则参数设置如下:

  • TopLeftX 设为 b1
  • TopLeftY 设为 a1
  • BottomRightX 设为 b2
  • BottomRightY 设为 a2

Image

示例:为小语种字幕精确框选擦除区域

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

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


按时间段擦除/保留字幕

有时您可能只想擦除视频的某一部分(如正片部分),而保留另一部分(如片头、片尾)的字幕。可通过 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
                            }
                        ]
                    }
                }
            }
        }
    }
}

常见问题

如果发生了非字幕的误擦,应该如何操作?

若出现非字幕内容类型被误擦除的情况,建议您采用框选擦除,手动增加擦除框,仅对框内区域识别到的字幕进行擦除,降低误擦除的概率。

最近更新时间:2026.01.28 12:24:46
这个页面对您有帮助吗?
有用
有用
无用
无用