Export 是 OpenChatCut 视频编辑与创作工作流中的交付环节,用于把时间线内容导出、渲染、下载、分享或作为最终成品交付。它同时也处理字幕文件导出,并在需要时提供渲染方式与渲染结果的选择。
用途 该技能面向 OpenChatCut 的最终交付阶段。当用户提出导出、分享、定稿时间线,或询问导出/渲染状态时使用。它的目标是把编辑好的时间线通过 OpenChatCut 的导出通道输出为可下载的成品,而不是先做一份扁平化的本地预渲染作为主要审阅/最终交付物。
默认策略
- 当用户要求导出/分享/定稿 OpenChatCut 时间线时,优先使用 submit_export。
- 编辑期间默认保留原始素材在本地。只有当云端导出/校对需要远程素材、且用户未禁止上传时,才上传原始文件。
- 不要把沙盒 ffmpeg 包装成 OpenChatCut 工具。仅当用户明确要求在 OpenChatCut 编辑工作流之外做独立的本地文件处理时,才使用沙盒 ffmpeg 做完整视频处理。对于 OpenChatCut 编辑任务,不要产出预先编辑或扁平化的本地渲染作为主要审阅/最终交付物,应使用 OpenChatCut 导出。
主要能力 视频导出:submit_export 支持 format 为 video;视频编解码器可选 h264(MP4,默认)和 vp8(WebM);帧率可选 24、25、30、50、60,省略 fps 则匹配时间线。 音频导出:format 为 audio,输出 MP3;省略 codec 与 fps,除非显式传入 "codec":"mp3"。 字幕文件导出:format 为 subtitles,subtitleFormat 可选 srt 或 txt。导出会使用字幕项在时间线上的实际逐词时间、源范围、翻译变体、显示文本覆盖,以及 wordsPerPage / maxCharactersPerLine 等节奏字段,并生成一个持久化的可下载导出任务。 剪辑工程 XML:format 为 xml,nleFormat 可选 fcp_xml(Premiere XML,默认)与 fcp_xml_resolve(DaVinci Resolve XML)。省略 timelineId 则使用当前活动时间线,或传入时间线 id/前缀以指定非活动时间线。需阅读并报告警告:字幕、纯色、SVG、不支持的片段属性以及未渲染的动态图形可能被 XML 格式丢弃。只有在透明 ProRes 的动态图形导出流程提供 motionGraphicRenderKeys 时,动态图形才会被 XML 表示;否则导出器会报告它们被丢弃。 动态图形导出:export_motion_graphic_prores 可把单个动态图形导出为透明 ProRes 4444。导出特定时间线实例时优先用 itemId(因为实例携带实时 propertyOverrides,例如已编辑文本);导出素材池动态图形用 assetId,后端会使用该素材的第一个时间线实例(若存在),以匹配编辑器的素材池导出行为。导出多个动态图形时,在一次调用中传入 itemIds 或 assetIds。每个动态图形仍是独立的持久渲染,用返回的 renderIds 通过 track_export 等待,再通过各自返回的下载路径下载。 素材池源文件下载:对由文件支持的源素材使用 request_asset_download,它会返回一个受保护的后端下载 URL/路径,用于原始源媒体。不要用 pull_asset 做用户下载,pull_asset 仅限沙盒使用。
使用方式 导出执行路径示例: { "format": "video", "codec": "h264", "resolution": "1080p", "fps": 30, "name": "final-cut" } submit_export 返回一个持久的 renderId。某些导出类型(如字幕文件)可能立即完成并返回 downloadUrl;视频/音频通常需要用 track_export 等待完成。
获得 downloadUrl 之后:
- 确定用户的 Downloads 文件夹:macOS/Linux 为 ~/Downloads,Windows 为 %USERPROFILE%\Downloads。
- 在触发任何代理/浏览器下载之前,检查 Downloads 文件夹中最近几分钟内新出现的 Chrome 下载产物,是否与预期导出名称、扩展名或渲染/下载 URL 的 basename 匹配。包括已完成文件和进行中的 .crdownload 文件。
- 如果存在匹配的新 .crdownload,不要再触发下载,等 Chrome 去掉 .crdownload 后缀且最终文件大小不再变化后,使用该完成文件。
- 如果已存在匹配的新完成文件,直接使用,不要重复下载。
- 如果只有较旧的文件,视为冲突,不作为当前导出。
- 不要覆盖已有文件;需要时选择安全的编号文件名,如 name (1).mp4。
- 始终把完成的导出文件下载到 Downloads 文件夹,而不是临时/工作目录。
- 始终在对话中内嵌展示下载的视频。如果有多个导出视频,全部下载并展示每个预览,而不仅是第一个。
- 如果项目包含仅本地的素材,渲染前先上传/注册云端可读的替代文件,或在用户希望保持本地时使用 Local CLI Export 路径。
- 有 renderId 时报告返回的 renderId。任务也会显示在编辑器右上角的导出队列中,含进度与取消。当用户要求把结果保留在 My Media,或当前工作流明确默认自动物化(例如直播切片)时,使用 saveToMediaPool:true;否则默认仍是普通可下载导出。
- 对长视频,调用 track_export 一次,action 为 "wait",timeoutSeconds 为 20。若返回 waitExpired:true,报告渲染在后台继续并结束本轮。之后用 action:"status" 查询;反复等待只会让 Agent 轮次保持打开。此渲染进行中时,不要对同一时间线启动另一次导出。
当用户询问导出/渲染状态,或当前轮次确实需要等待已提交的视频/音频渲染时,使用 track_export: { "action": "status", "renderIds": "abc123" } 对于最新项目导出,省略 renderIds 并传 "latest": true。track_progress 用于生成/转写/上传任务,不用于渲染任务。
本地渲染(本构建) 所有渲染都是本地的:submit_export / submit_render_job 驱动本地渲染服务(headless Chrome,作用于编辑器展示的同一时间线状态),直接从磁盘的 /media/uploads/ 读取媒体。不需要 S3,没有 CLI,也没有需要等待的云端任务(针对磁盘支持的素材)。
- submit_export:字幕/XML 同步返回;视频/音频在本构建中也在调用内渲染(长时间线可能耗时较久——应提醒用户而非轮询)。
- submit_render_job + track_export:异步路径,立即返回 renderId,用 track_export(renderIds / latest / onlyActive)轮询,然后把返回的下载路径交给用户。
- 仍处于 blob: 占位符(上传进行中)的素材还不能渲染——等 track_progress target=upload 报告 ready 后再提交。
回退 如果渲染因素材字节缺失而失败(占位符从未重新链接、文件已从磁盘删除):
- 请用户在“我的素材”(离线素材横幅)中重新链接素材,或重新导入文件。
- 对于 URL 来源的媒体,重新运行 download_media 恢复字节,然后重新提交。 除非在调试,否则不要告诉用户他们需要理解 HTML-in-Canvas、Remotion 或存储内部机制。在产品层面解释,例如“本地快速导出”“素材还在上传,稍等再导”“需要先重新链接本地素材”。
结果追踪 对于 submit_export,记录:renderId;时间线/范围/分辨率/编解码器/帧率;用户可从编辑器渲染任务面板下载。记录上传的素材 ID,以及云端导出因仅本地素材受阻时尝试过的任何回退。
适用场景 适用于 OpenChatCut 时间线的导出、分享、定稿交付;视频、音频、字幕文件、NLE XML 导出;动态图形的透明 ProRes 4444 导出;素材池源文件下载;导出/渲染状态查询。
限制
- 字幕导出尚未复用浏览器的 Remotion 字幕页面规划器,因此视觉换行/分页在时间上正确但只是近似,并非与烧录字幕分页逐字节一致。
- XML 格式可能丢弃字幕、纯色、SVG、不支持的片段属性和未渲染的动态图形;动态图形仅在提供 motionGraphicRenderKeys 时才被表示。
- 仍在上传中的 blob: 占位素材不可渲染。
- 本构建中视频/音频为调用内渲染,长时间线耗时较久。
- pull_asset 仅限沙盒,不能用于用户下载。
- 有关收费、价格、平台支持范围等信息,资料暂未提供。