
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
@volcengine/amk-editor
Advanced tools
火山引擎 AI MediaKit 官方 Web 视频编辑器 SDK。
npm install @volcengine/amk-editor
需要 React 18 或 19。使用本 SDK 须获得有效的火山引擎商业授权,条款见 LICENSE。 本 SDK 使用的第三方开源组件仍分别适用其各自的许可证。
import { AmkEditor } from '@volcengine/amk-editor';
const editor = new AmkEditor({
container,
projectId: 'your-project-id',
endpoint: 'https://your-backend.example.com',
// 可选:每次请求前动态获取,SDK 不解析或改写返回的 Header。
getHeaders: async () => ({
Authorization: `Bearer ${await getLatestToken()}`,
'X-Customer-Id': 'your-customer-id',
}),
material: {
onUploadMaterial: async files => {
// 上传到业务存储后返回素材列表,每项必须带 source_material_id
return [];
},
onUploadUrlMaterial: async urls => {
return [];
},
onRefreshPlayInfo: async materials =>
materials.map(item => ({
material_id: item.material_id, // 仅用于匹配,不要改写
url: '...',
poster: item.poster,
sprite: item.sprite,
})),
},
});
// 外部工具栏可复用素材面板的同一套导入弹窗与入库链路。
editor.requestMaterialImport('local'); // 本地文件选择 + 本地上传确认弹窗
editor.requestMaterialImport('url'); // URL 上传弹窗
editor.requestMaterialImport('system'); // 业务资产库回调
// 只有这个外部调用触发的导入成功后才回调;编辑器自身的导入按钮不会触发它。
editor.requestMaterialImport('local', {
onMaterialsImported: materials => {
console.log('本次已入库素材', materials);
},
});
// 从服务端重新拉取当前工程,并热更新素材与 Track(不写入撤销历史)。
await editor.refreshProject();
页面卸载时销毁:
editor.destroy();
projectId、endpoint 必填。endpoint 指向你的业务代理。theme 默认 light。未传或传入其他值时按浅色渲染;只有显式 theme: 'dark' 才走暗色。define(["./core"]) 已在构建时剔除,避免 Next.js / webpack 误解析不存在的 dist/core.js。getHeaders 可选,每次请求前都会重新调用;SDK 不解析、不缓存、不改写返回值,仅将其合并到发往 endpoint 的工程、素材、tools、tasks、导出等请求中。闭包内 Token 更新会自动用于下一次请求。source_material_id,不必填写 material_id。onRefreshPlayInfo 返回新的访问地址。onMaterialsImported:素材成功入库后回调已合并 material_id 的列表;可用于把新素材挂到对话草稿。失败或取消不会触发。onPersistExtractUrls:把抽帧得到的临时地址转存为业务长期地址,并随 materialPatch 写回自定义存储字段。export.qualityEnhancement: true 以在导出弹窗展示「视频画质增强」;默认不展示。header.mount 为外部 DOM 节点,将顶栏渲染到该节点(而不是编辑器内部),便于宿主做全宽顶栏;header.show: false 仍可完全隐藏顶栏。header.onTitleUpdateSuccess:工程名 PATCH 成功后回调 { projectId, title }。保存成功前编辑器继续展示旧名称;保存失败不会修改编辑器标题,也不会触发回调。requestMaterialImport(type, options?) 返回是否成功触发已配置入口;local、url、system 分别要求存在本地上传能力、onUploadUrlMaterial、onUploadFromSystem。外部入口不会复制上传逻辑,仍走素材面板相同的回调、TOS 签名、素材入库与元信息处理。可选的 options.onMaterialsImported 只对这一次外部触发有效,编辑器自身的导入按钮不会调用它。toolbar.customItems 的只读态不会自动置灰。需要禁用时在该项 disabled({ readonly }) 里自行返回 true(例如 disabled: ({ readonly }) => readonly)。录音中仍会全局锁定自定义项。内置 ASR 按钮在只读时仍会禁用。refreshProject() 会等待当前保存队列结束,再重新拉取工程、刷新临时播放地址并热更新素材与 Track;远端 Track 不会写入本地撤销历史,也不会被自动保存回服务端。SDK 会随 import '@volcengine/amk-editor' 自动注入样式,导航栏、左侧分类、素材网格的布局由 SDK 自己负责。接入方不必再写补丁 CSS 才能让界面正常显示。
编辑器挂在普通 DOM(#track-video-editor)里,不是 Shadow DOM。宿主页面里针对 section / nav / aside 的全局布局重置会穿透进来,把顶栏或左侧分类挤扁。
请避免:
section、nav、aside 写全局 display / flex / height / margin 规则。#track-video-editor nav { ... } 这类按标签名锁定内部节点。同名标签在编辑器里用途不同,一条规则会同时打到顶栏和分类栏。
如需约束编辑器尺寸,只设置挂载容器或 #track-video-editor 本身的 width / height / min-height。FAQs
AMK scenario editor wrapper for VeVeditor
The npm package @volcengine/amk-editor receives a total of 208 weekly downloads. As such, @volcengine/amk-editor popularity was classified as not popular.
We found that @volcengine/amk-editor demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 51 open source maintainers collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.