将视频/音频媒体上传至BytePlus VOD(视频点播)存储,返回Vid及播放引用;支持本地文件上传(ApplyUploadInfo +...
VOD 精密擦除
功能概述
VOD 精密擦除是一项面向实际任务的技能,主要用于Uploads video/ audio to a BytePlus VOD 空间(从本地文件或公共 URL) 返回vid://... reference.;对于已经使用 VOD 的媒体,请提交精密擦除任务。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
VOD 精准擦除
将视频/音频上传至 BytePlus VOD 存储空间(来源为本地文件或公开 URL),并返回一个 vid://… 引用。对于已存在于 VOD 中的媒体,提交精准擦除任务(StartExecution → Operation.Task.Type: Erase),且仅使用自动 OCR。请不要向终端用户说明其可切换擦除模式(手动 / 自动)——本能力始终发送 Auto 模式。NewVid 始终为 true(不作为用户可选配置项暴露)。
产品范围
| 方面 | 行为 |
|---|---|
| 输入 | Vid 或 DirectUrl(JSON 字段 video) |
| 擦除覆盖范围 | 默认仅擦除字幕(Auto.Type: Subtitle,SubtitleFilter: {})。用户可通过设置 text: true 或 all_text: true 选择擦除所有检测到的屏幕内文字 → 触发 Auto.Type: Text。 |
| 时间线范围 | 默认为整段视频(不启用 ClipFilter)。可选传入 clip_filter,其 mode 取值为 skip 或 selected;任一 mode 被指定时,clips 字段为必填项(非空列表)。 |
| 输出媒资 | NewVid 始终为 true —— 不可配置,亦不向用户提示。 |
| 擦除元数据 | 默认 with_erase_info: true(即 WithEraseInfo)。若设为 false,则标准输出中的 EraseMeta 为 {};当 Erase.File 返回时,VideoUrls 字段仍会被填充。 |
不支持:Manual 模式、自定义比例的 Locations、对 SubtitleFilter 超出 {} 的调优、VideoOption.EncodeMode、覆盖 NewVid 值。
精准擦除白名单:若遇到 HTTP 403 错误或“Permission denied”,请按 BytePlus VOD 要求说明白名单 / 工单流程。
前置条件
- 环境变量(必需;可选地在工作目录下放置
.env文件 —— 脚本会自动加载):BYTEPLUS_ACCESSKEY— BytePlus Access KeyBYTEPLUS_SECRETKEY— BytePlus Secret KeyVOD_SPACE_NAME— VOD 存储空间名称
- 执行方式:示例中使用
uv run python …(若已安装依赖,也可直接运行python scripts/…)。
工作流概览
上传流水线(本地文件):
[S1_APPLY] ApplyUploadInfo → TOS 上传地址 + SessionKey
[S2_TOS] 向 TOS 执行 PUT(直传或分块)
[S3_COMMIT] CommitUploadInfo → Vid
输出:{ Vid, Source, PlayURL, FileName, SpaceName, SourceUrl }
上传流水线(URL):
[S1_UPLOAD] 提交 URL 上传任务(UploadMediaByUrl)→ JobId
[S2_POLL] 轮询 QueryUploadTaskInfo → Vid
输出:{ Vid, Source, PlayURL, FileName, SpaceName, SourceUrl, JobId }
精准擦除流水线:
[S3_ERASE] 提交 Erase 任务(StartExecution / Task.Type Erase)→ RunId
[S4_POLL] 轮询 GetExecution → 输出 Erase.File(+ 可选 Erase.Info)
输出:{ Status, SpaceName, VideoUrls[{ FileId, Vid, DirectUrl, Source, Url }], EraseMeta? }
快速自检(推荐)
运行任意脚本前,请确认:
.env文件或环境变量中包含BYTEPLUS_ACCESSKEY、BYTEPLUS_SECRETKEY和VOD_SPACE_NAME。
根据用户意图选择对应流水线:
| 用户意图 | 流水线 | 入口脚本 |
|---|---|---|
| 上传视频至 VOD | 上传 | scripts/upload.py |
| 字幕 / 屏幕内文字擦除 | 精准擦除 | scripts/precise_erase.py |
S1_UPLOAD & S2_POLL:上传并获取 Vid
调用约定
请从 Skill 根目录(byted-byteplus-vod-precision-erasure/)执行:
# 本地文件上传(完成后返回 Vid) uv run python scripts/upload.py "/path/to/video.mp4" [space_name] # URL 上传(轮询直至返回 Vid) uv run python scripts/upload.py "https://example.com/video.mp4" [space_name] uv run python scripts/upload.py "https://example.com/sample.mp4" my_space
- 第一个参数:为本地文件路径或公共
http:///https://URL(自动识别)。 - 第二个参数(可选):存储空间名称;若省略,则使用
VOD_SPACE_NAME。 - 路径与 URL 必须包含文件扩展名(例如
.mp4、.mov、.mp3)。
上传流程
本地文件(同步,三步):
ApplyUploadInfo(API 版本2023-01-01)→ 获取 TOS 地址与 SessionKey- 向 TOS 执行 PUT(直传适用于
< 20 MiB,否则分块上传) CommitUploadInfo(2023-01-01)→ 返回Vid
URL 拉取(异步 + 轮询):
UploadMediaByUrl(2023-01-01)→ 返回JobId- 轮询
QueryUploadTaskInfo直至完成(轮询限制同关联技能:通常为 360 次 × 5 秒) - 返回
Vid
输出格式
成功时,标准输出为单个 JSON 对象,例如:
{
"Vid": "v0d123abc",
"Source": "vid://v0d123abc",
"PlayURL": "https://example.cdn.com/xxx.m3u8",
"PosterUri": "",
"FileName": "uuid-filename.mp4",
"SpaceName": "my_space",
"SourceUrl": "https://example.com/video.mp4",
"JobId": "job-xxx"
}
- 请保留
Source(vid://…)供下游技能使用。
超时处理(URL 上传)
若 URL 轮询耗尽重试次数,标准错误输出 / JSON 中将包含类似内容:
{
"error": "Polling timed out (360 attempts × 5s); the URL pull upload is still processing",
"resume_hint": {
"description": "The URL upload has not finished yet; retry with the command below",
"command": "uv run python scripts/upload.py "" [space_name]"
},
"JobIds": "job-xxx",
"State": "running"
}
S3_ERASE & S4_POLL:精准擦除
调用约定
请从 Skill 根目录(byted-byteplus-vod-precision-erasure/)执行:
# 默认:仅字幕、整段视频、启用 WithEraseInfo
uv run python scripts/precise_erase.py '{"type":"Vid","video":"v0310abc"}'
uv run python scripts/precise_erase.py '{"type":"Vid","video":"vid://v0d225gxxx"}' production_space
# 更广范围 OCR(字幕 + 其他屏幕内文字)
uv run python scripts/precise_erase.py '{"type":"Vid","video":"v0310abc","text":true}'
uv run python scripts/precise_erase.py @params.json
# 超时后恢复执行
uv run python scripts/poll_execution.py '' [space_name]
参数参考
| 参数 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
type |
字符串 | ✅ | Vid 或 DirectUrl |
video |
字符串 | ✅ | Vid 或 VOD 中的 FileName;vid:// / directurl:// 前缀将被自动剥离 |
text |
布尔值 | 否 | 若为 true:启用 Auto.Type: Text(更激进)。默认 false → 仅字幕。 |
all_text |
布尔值 | 否 | 等效于 text(若两者均设置,优先应用 text)。 |
clip_filter |
对象 | 否 | 省略表示整段视频。若设置:其 mode 必须为 skip 或 selected,且 clips 为必填项(非空列表,元素为 { "start", "end" },单位为秒;也接受 Start/End 字段)。 |
with_erase_info |
布尔值 | 否 | 默认 true(即 WithEraseInfo)。若为 false,则不请求详细的擦除几何信息;标准输出中 EraseMeta 为 {}。 |
请不要向用户提示 Manual 模式 或 NewVid 配置项。
智能体提示(自然语言)
需明确区分:仅字幕 vs 全部屏幕内文字;整段视频 vs 指定片段(skip / selected + clips);以及用户是否需要区域级擦除遥测信息(with_erase_info)。请使用对话式表述 —— 除非用户主动询问实现细节,否则避免暴露原始 JSON 字段名。
输出格式
成功时,标准输出为单个 JSON 对象,大致如下:
{
"Status": "Success",
"SpaceName": "my_space",
"VideoUrls": [
{
"FileId": "…",
"Vid": "v0…",
"DirectUrl": "path/to/output.mp4",
"Source": "vid://v0…",
"Url": "https://example.cdn.com/…"
}
],
"AudioUrls": [],
"Texts": [],
"EraseMeta": {
"Duration": 57.099,
"Info": {}
}
}
当 with_erase_info 为 false 时,EraseMeta 为 {}。
VideoUrls[0].Url:当该空间签名成功时,此 URL 可播放或下载。Source:若 API 返回新Vid,优先使用vid://…;否则使用directurl://…。
超时处理(GetExecution 轮询)
与增强类技能采用相同模式:
{
"error": "Polling timed out (360 attempts × 5s); the job is still processing",
"resume_hint": {
"description": "The job has not finished yet; resume polling with the command below",
"command": "uv run python scripts/poll_execution.py '' [space_name]"
}
}
环境变量
| 名称 | 说明 | 是否必需 |
|---|---|---|
BYTEPLUS_ACCESSKEY |
BytePlus Access Key | 是 |
BYTEPLUS_SECRETKEY |
BytePlus Secret Key | 是 |
VOD_SPACE_NAME |
VOD 存储空间名称 | 是(或通过 CLI 参数传入) |
VOD_POLL_INTERVAL |
轮询间隔(秒,默认为 5) | 否 |
VOD_POLL_MAX |
最大轮询次数(默认为 360) | 否 |
VOD_URL_EXPIRE_MINUTES |
签名 URL 过期时间(分钟,默认为 60) | 否 |
VOD_PLAY_DOMAIN |
强制指定播放域名(可选,优先级最高) | 否 |
VOD_HOST |
覆盖 VOD OpenAPI 主机名(可选) | 否 |
错误输出格式
所有失败均统一使用:
{"error": "error description"}
参考文档
- BytePlus VOD Python SDK
- 精准擦除参数参考
- API:
ApplyUploadInfo(2023-01-01) - API:
CommitUploadInfo(2023-01-01) - API:
UploadMediaByUrl(2023-01-01) - API:
QueryUploadTaskInfo(2023-01-01) - API:
StartExecution(2025-07-01) - API:
GetExecution(2025-07-01)
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习
最新文章