本文档面向需要在 Web 应用中集成 AI 智能剪辑能力的前端及服务端开发者。通过 AI MediaKit Web 智能剪辑 SDK(@volcengine/amk-editor-assistant),您可以在业务页面中嵌入一套 AI 驱动的视频创作工具,实现从素材管理、智能编排、特效渲染到高清导出的全链路剪辑流程,而无需自行拼装复杂的底层组件和 AI 算法。
@volcengine/amk-editor-assistant 是一款面向浏览器环境的、一站式的智能视频剪辑SDK,将强大的 AI 助手与专业的剪辑器无缝整合,为用户提供自然语言驱动的全新视频创作体验。
集成 Web 智能剪辑 SDK 时,您的应用前端(浏览器)将与您的业务后端(代理服务)以及 AI MediaKit 服务端进行交互。
浏览器中同时存在剪辑器和 AI 助手两条逻辑请求链路。两条链路共用顶层 endpoint 指向同一个业务代理入口,由 SDK 分别追加对应的上游路径:
为保障密钥(API Key)安全,浏览器不能直接请求 AI MediaKit 服务。所有请求都必须通过您自己实现的业务代理服务进行中转。该服务主要负责:
- 安全地附加密钥:将安全存储在您服务器上的 AI MediaKit API Key 添加到请求头中。
- 校验业务权限:验证当前登录用户是否有权访问其正在操作的 projectId,防止数据越权。
- 转发请求:将来自 SDK 的请求安全地转发给对应的 AI MediaKit 上游服务。
使用 Web 智能剪辑 SDK 会涉及三部分费用,分别由 AI MediaKit 和火山方舟进行计费。费用遵循日结后付费模式,次日 6:00 生成前一日的账单并进行结算。
AI 助手在进行自然语言对话(推理模型)和多模态内容理解(多模态理解模型)时,会调用您在 SDK 中配置的火山方舟大模型。此部分费用由火山方舟根据模型调用过程中实际消耗的 Token 数量(包括输入和输出 Token)进行计费。 关于不同模型的 Token 计费标准,请查阅火山方舟最新官方定价说明。 在 AI 助手自动编排或用户手动编辑过程中,可能会调用 AI MediaKit 的多种原子能力。这些能力将按照各自的计费规则进行计费,主要包括以下两类:
- 视频工具:当 AI 助手需要理解视频内容或执行特定处理时,会触发视频工具的调用,包含字幕识别、视频抽帧、视频理解、高光识别等。这些能力将按照各自的计费规则进行计费,详细规则请参阅视频工具计费。
- 剪辑工具:当您或您的用户最终执行“导出视频”操作时,会产生剪辑费用。该费用基于最终输出的视频时长和分辨率进行计费。详细规则请参阅剪辑工具计费。
在开始编码前,请确保已完成以下准备:
- 获取 API Key:在 AI MediaKit 控制台的 API Key 管理页面创建并获取 API Key。此凭证将用于您的服务端代理。
- 获取模型 Endpoint ID:前往火山方舟控制台开通管理页面,开通所需的大模型服务并获取其 Endpoint ID。Web 智能剪辑 SDK 依赖以下两类模型协同工作:
- 推理模型(必需):负责处理用户在对话中输入的自然语言指令及流程规划。您必须在 SDK 初始化时通过 assistant.model 参数配置一个推理模型的 Endpoint ID。您可以根据业务对回复准确度、响应耗时、综合成本等因素的考量进行选择以下模型:
- 多模态理解模型:负责理解视频、音频、图片等媒体内容。在 SDK 初始化时通过 assistant.preferMultiModalModels 参数进行配置。
- 音频理解(必需):必须配置 doubao-seed-2-0-lite-260428,以支持音频相关的理解能力。
- 视觉理解(推荐):建议从 doubao-seed-2-1-turbo-260628 或 doubao-seed-2-1-pro-260628 中选择一个配置,以支持视频画面、图片等视觉内容的理解。
- 进行跨服务授权:前往 AI MediaKit 控制台基础配置 > 授权管理页面,为 AI MediaKit 授予访问您 ARK 火山方舟资源的权限。
本节将引导您完成一个从零到一的端到端集成,快速运行一个最基本的智能剪辑应用。
在您的前端项目根目录中执行以下命令:
在您的服务端,为用户的每次创作会话调用 AI MediaKit API 创建一个云端剪辑工程,并将其唯一标识 project_id 传递给前端。
请求示例:
说明
$AMK_API_KEY:应替换为您从 AI MediaKit 控制台获取并安全存储在服务端的 API Key。
响应示例:
剪辑器和 AI 助手共用一个业务代理入口(例如 /api/amk-proxy)。SDK 会在该入口后分别追加 Editing API 和 Assistant Runtime 的完整上游路径。以下 Node.js + Express 示例已同时包含 Editor 与 Assistant 的路径白名单及转发逻辑;在实际项目中,您还需补充用户身份验证、工程权限校验、接口限流和操作审计。
在您的前端页面中,引入 SDK 及其样式,准备一个 DOM 容器,然后调用 createAmkEditorAssistant 方法创建并挂载实例。
准备挂载容器:
创建实例:
完成以上步骤后,启动您的 Web 应用并打开包含编辑器的页面,进行以下验证:
- 界面渲染:左侧 AI 助手面板与右侧剪辑器界面能否正常加载,并且能看到工程的标题、素材与时间轴。
- 鉴权:检查浏览器网络请求,确认所有对 /api/amk-proxy 的请求都携带了业务 Token,并且浏览器代码中没有硬编码的长期 API Key。
- 对话与联动:向 AI 助手发送一条指令(如“帮我剪一个 15 秒的视频”)。检查 AI 是否能响应,并在运行期间编辑器是否变为只读状态。
- 素材导入:尝试上传一个媒体文件,检查 onUploadFile 是否被调用,以及上传成功后素材是否出现在素材库并被自动加入对话。
- 恢复:刷新页面,检查同一 projectId 是否能恢复剪辑工程及其绑定的 AI 对话历史。
- 销毁:离开页面时,检查 sdk.destroy() 是否被调用,确保没有内存或事件监听器泄漏。
如果以上步骤均验证通过,恭喜您已成功完成 SDK 的基本集成。
为了实现素材的持久化管理、保障数据资产安全,并对存储成本进行精细化控制,您可以将 AI MediaKit Web 智能剪辑 SDK 与您的火山引擎对象存储(TOS)进行集成。本章节将引导您完成从创建存储桶、配置权限到代码接入的全过程。
在开始之前,请先了解以下与 TOS 相关的核心概念:
说明
最佳实践:为了数据安全,建议将 Bucket 访问权限设为“私有”。在您的数据库和剪辑工程中,始终使用稳定的 tos://bucket/key 格式来记录和持久化素材。仅在前端页面需要播放或展示时,才通过 STS 服务动态生成临时的签名 URL。
以下为浏览器、您的业务服务端与火山引擎云服务(TOS, STS, IAM)之间的完整交互流程:
- 用户在浏览器中选择本地文件准备上传,或打开一个包含 tos:// 素材的已有工程。
- 前端 SDK 调用您在初始化时提供的 getUploadSTS 回调函数,向您的业务服务端请求临时上传凭证。
- 您的业务服务端在验证用户身份和权限后,使用其安全存储的长期 AK/SK 调用火山引擎 STS 服务的 AssumeRole 接口。
- STS 服务返回一组有时效性的临时凭证(AccessKeyId, SecretAccessKey, SessionToken),业务服务端将其透传给前端。
- SDK 使用这组临时凭证初始化一个 TOS Browser.js SDK 实例,执行文件上传(PutObject)或为已有文件生成预签名 URL(getPreSignedUrl)。
- 上传成功后,SDK 将 tos://bucket/key 作为素材的 source_material_id 进行持久化,并将新签发的播放地址填入 url 字段供 SDK 使用。
说明
建议为每个剪辑工程规划独立的对象前缀,例如 amk-editor/<projectId>/,以便后续进行精细化的权限控制和成本分摊。
- 配置跨域访问(CORS):在 Bucket 的权限管理 > 跨域访问设置 中,添加一条规则:
- 操作 Methods:至少包含 PUT、GET、HEAD。
- Allow-Headers:为方便调试,可先设置为 *。在生产环境中,应根据浏览器实际发出的请求头(如 Content-Type, x-tos-content-md5 等)进行收窄。
- Expose-Headers:建议包含 ETag 和 x-tos-request-id,便于排查问题。
注意
为确保安全,请勿在生产环境中使用通配符 * 作为来源 Origin。请始终配置精确的业务域名。
遵循最小权限原则,推荐使用一个专用的 IAM 子账号来调用 STS 服务,并创建一个仅允许访问特定 TOS 资源的角色。切勿在业务服务端硬编码主账号的长期密钥,更不能将任何长期密钥下发给浏览器。
- 为其创建并保存好访问密钥(AK/SK),此密钥将部署在您的业务服务端。
- 为该子用户授予 STSAssumeRoleAccess 权限,或创建一个仅允许对特定角色执行 sts:AssumeRole 操作的更严格的自定义策略。
- 创建用于上传的 IAM 角色:在 IAM 控制台的角色管理页面中创建一个角色。信任身份选择当前账号,策略选择 STSAssumeRoleAccess。
- 为角色绑定 TOS 权限策略:角色的权限策略决定了临时凭证的最终权限。请创建一个自定义策略,仅授予必要的 TOS 操作权限,然后将其绑定到角色上。切勿直接授予 TOSFullAccess。以下是一个最小权限策略示例,仅允许对 example-bucket 下amk-editor/ 前缀内的对象执行上传和读取操作。请务必将桶名和前缀替换为您自己的配置。
- 记录角色 TRN:在角色详情页面,复制并保存其 TRN(火山引擎资源名称),格式为 trn:iam::<AccountId>:role/<RoleName>。此 TRN 将用于服务端的 AssumeRole 调用。
在您的业务服务端,创建一个 API 端点,例如 /api/tos-upload-sts,用于接收前端的凭证请求并返回 STS 临时凭证。
注意
以下 Node.js 示例仅为核心逻辑演示。生产环境的接口必须包含完整的用户登录态校验、剪辑工程 projectId 的访问权限检查、接口限流和日志审计。
说明
为了能被 SDK 内置的 TOS 上传模块正确识别,您的接口响应体必须包含 accessKeyId, secretAccessKey, stsToken 和 expiration 四个字段。
在前端初始化 createAmkEditorAssistant 时,传入 storage 配置项,即可启用 SDK 内置的 TOS 上传功能。
说明
配置 storage 后,从本地上传文件将默认使用 SDK 内置的 TOS 上传流程,您无需再实现 material.onUploadFile 回调。
当您完成上述配置后,SDK 内部将按以下机制自动处理 TOS 资源的上传与访问:
- 上传与持久化:用户上传文件成功后,SDK 会将稳定的 tos://<bucket>/<key> 地址保存到素材的 source 和 source_material_id 字段中,并同步到剪辑工程。
- 访问与刷新:当加载工程、或素材的临时播放地址即将过期时,SDK 会自动调用 getUploadSTS 获取新的临时凭证,并为 tos:// 格式的源文件、封面和雪碧图重新生成带签名的短期播放 URL。
- 任务产物:当 AI MediaKit 的原子能力(如抽帧、转码)或最终的导出任务返回 tos:// 格式的产物地址时,SDK 同样会自动将其转换为可供预览和下载的短期 HTTP(S) URL。
本章节提供集成 Web 智能剪辑 SDK 时所需的详细参考信息,包括服务端 API、SDK 初始化配置、实例方法和核心数据结构。
createAmkEditorAssistant(options) 的完整配置项。
该配置项用于启用 SDK 内置的存储方案,例如直传到您的火山引擎对象存储(TOS)。storage 对象整体可选;但一旦配置,其内部的 media_output_destination 和 getUploadSTS 必须同时提供。
AI 助手配置 AmkEditorAssistantConfig
双栏布局配置 AmkEditorAssistantLayoutOptions
您的业务代理服务(BFF)通过同一个代理入口,将前端 SDK 的调用转发到 AI MediaKit 同一 Host 下的两组路径:剪辑器 API 和 AI 助手 API。
这套 API 负责管理剪辑项目的核心数据,如工程、素材库、时间轴和异步任务。
基础信息
响应约定
所有接口在 HTTP 层面统一返回 200 OK,具体的业务成功与失败通过响应体内容来区分。
常用接口
POST /projects
创建一个新的剪辑工程,并返回其唯一标识 project_id。
请求参数
POST /projects/{projectId}/materials(创建)
PUT /projects/{projectId}/materials(更新或插入)
向指定工程中批量添加或更新素材。PUT 操作会根据 source_material_id 判断是更新现有素材还是插入新素材。此操作具有原子性,任一素材校验失败,整批操作都将回滚。
请求参数
AI 助手 API (Assistant Runtime API)
这套 API 负责处理所有与大模型交互的逻辑,包括自然语言理解、对话管理和 Agent 工具调用。
基础信息
接口白名单
您的代理服务应至少放行以下 SDK 必需的路径和方法: