Asset Import 是 OpenChatCut 中用于把媒体获取并导入项目素材库的能力,主要服务于视频编辑与创作场景。该构建在本地运行编辑器及其媒体服务器,没有托管的导入 API,没有 CLI,也没有 OAuth;媒体只能通过编辑器界面或下述代理工具进入项目。导入路径按字节所在位置区分。
一、用途 用于为 OpenChatCut 项目素材库获取或导入媒体,包括本地或已附加的视频、用户提供的文件,以及由代理下载的公开 URL 媒体。多源编辑时应从原始源素材在 OpenChatCut 时间线上构建可审阅的工作。
二、三种导入路径
- 用户本地文件(主要路径):请用户把文件拖入编辑器(预览画布或“我的素材”面板),或使用上传按钮。本地流水线随后自动运行:流式写入 /media/uploads/、条件转码(长边 ≤1920、浏览器友好编解码器、约 8Mbps)、音频提取、自动转录(上传即启动 ASR)。不要让用户自行预先转换、预裁剪或转码,流水线会处理。代理无法读取用户文件系统;若用户给出 /Users/... 或 C:... 路径,应请其把文件拖入编辑器,代理无法抓取该文件。
- 公开 URL(代理驱动):使用 download_media 传入单个 URL 或批次数组。服务器抓取后存到 /media/uploads/ 并注册为素材池资产。适合用户指向的素材站或网络媒体。下载后该资产与其它媒体池资产行为一致。
- 外部主机传输:调用 import_media,参数为 {"action":"create_session", "assetType":..., "filename":..., "contentType":..., "size":...}。它返回一个短期有效的上传槽位,绑定当前项目、会话、资产身份、基础文件名、POST、MIME 类型和确切字节数。主机侧脚本可按声明的请求头上传到该确切 URL。代理沙箱无法访问用户的 localhost,因此不要尝试从 run_code 执行该传输。
三、提交与元数据 上传成功的响应会返回一个不透明回执(receipt)、回显的 assetType 以及上传路径。在需要精确时长、尺寸、fps 或是否存在音频时,应探查该上传路径,然后调用 finalize_uploaded_asset,传入回执、回显的 assetType、测得的媒体元数据,以及音频/视频/gif 的 durationInSeconds。服务器会解析权威的哈希、路径、大小、文件名和资产 id。finalize 会提交资产但绝不启动 ASR;把音频/视频资产放到轨道上后,如需转录须另行调用 transcribe_track。在 finalize 成功之前,该资产不存在也不可用。若要替换缺失的媒体,向 import_media 传入已有的 assetId;新建资产则省略它。切勿自行构造 /media/uploads/... 路径,也不要在上传响应返回前声称字节已就绪。
四、代码资产 对于手写动态图形(Motion Graphics)等代码资产,应使用 create-motion-graphics 技能(新建资产用 create_motion_graphic_from_code,编辑用 asset-code updates)——MG 代码不是导入的文件。
五、存储说明 字节存放在本地磁盘(/media/uploads/),直接提供并支持 Range。若配置了 Cloudflare R2,上传会镜像到 R2,其它设备可从其上水合;没有 R2 时项目仅限本地。仅本地是有效的最终状态:预览、编辑和导出都从磁盘读取。云镜像仅在需要跨设备访问时才必要。
六、编辑纪律 多源编辑时,应从 OpenChatCut 时间线中的原始源素材构建可审阅的工作。导入前不要在本地拼接、预裁剪、预合成、烧录字幕或扁平化媒体——导入原始素材并在时间线上完成所有合成,使每一步都可审阅、可撤销。