匯出
使用 OpenChatCut 的匯出工具進行最終交付。匯出請求應呼叫 submit_export(或非同步的 submit_render_job),然後使用 track_export 檢查狀態,並在結果未立即返回時取得最終交付物。
預設政策:
- 當使用者要求匯出/分享/完成 OpenChatCut 時間線時,優先使用
submit_export。 - 編輯期間預設將原始素材保留在本機。僅當雲端匯出/校樣需要遠端素材,且使用者未禁止上傳時,才上傳原始檔案。
- 不要將沙箱
ffmpeg工作包裝成 OpenChatCut 工具。只有在使用者明確要求一個獨立於 OpenChatCut 編輯工作流程之外的本地檔案操作時,才使用沙箱ffmpeg進行完整的影片處理。對於 OpenChatCut 編輯任務,不要產生預先編輯或扁平化的本地渲染作為主要的審查/最終交付物;請使用 OpenChatCut 匯出。
持久化匯出
使用 submit_export 作為執行路徑:
{
"format": "video",
"codec": "h264",
"resolution": "1080p",
"fps": 30,
"name": "final-cut"
}
影片編解碼器選項為 h264(MP4,預設)和 vp8(WebM)。影片影格率選項與編輯器 UI 一致:24、25、30、50 或 60;省略 fps 以符合時間線設定。音訊匯出為 MP3:傳入 "format":"audio" 並省略 codec / fps,除非您明確傳入 "codec":"mp3"。
submit_export 會返回一個持久化的 renderId。某些匯出類型(例如字幕檔案)可能會立即完成並返回 downloadUrl;影片/音訊通常需要 track_export 來等待完成。
在取得每個 downloadUrl 後:
- 確認使用者的「下載」資料夾:macOS/Linux 為
~/Downloads,Windows 為%USERPROFILE%\Downloads。 - 在觸發任何代理程式/瀏覽器下載之前,檢查「下載」資料夾中是否有最近幾分鐘內建立的、符合預期匯出名稱、副檔名或渲染/下載 URL 基底名稱的 Chrome 下載檔案。包括已完成的檔案和正在進行中的
.crdownload檔案。 - 如果存在匹配的、正在進行中的
.crdownload檔案,請勿觸發另一個下載。請等候 Chrome 移除.crdownload副檔名且最終檔案大小不再變更,然後使用該已完成的檔案。 - 如果已存在匹配的、已完成的檔案,請直接使用它,而不是再次下載。
- 如果僅存在較舊的檔案,請將其視為衝突,而非本次匯出的結果。
- 不要覆寫現有檔案;必要時選擇一個安全的編號檔案名稱,例如
name (1).mp4。 - 務必將完成的匯出檔案下載到「下載」資料夾,而不是暫存或工作目錄。
- 務必將下載的影片內嵌在聊天視窗中。如果有多個匯出的影片,請下載所有影片並顯示每個預覽,而不只是第一個。
如果專案包含僅限本機的素材,請在渲染前上傳/註冊雲端可讀的替代素材,或者在使用者想要保持本機作業時使用「本地 CLI 匯出」路徑。
當存在 renderId 時,請回報它。該工作也可以在編輯器右上角的匯出佇列中看到,包括進度和取消功能。當使用者要求將結果保留在「我的素材庫」,或者活躍工作流程(例如 livestream-to-clips)明確預設為自動具體化時,請使用 saveToMediaPool:true;否則預設保持為一般的可下載匯出。對於較長的影片,請使用 action:"wait" 和 timeoutSeconds:20 呼叫 track_export 一次。如果它返回 waitExpired:true,請回報導覽在背景繼續,並結束此輪對話。稍後使用 action:"status" 檢查;重複的等待只會保持代理程式對話輪次開啟。當此渲染處於活躍狀態時,請勿為同一時間線啟動另一個匯出。
當使用者詢問匯出/渲染狀態,或當前輪次確實需要等待已提交的影片/音訊渲染時,請使用 track_export。已完成的連接器匯出會返回 downloadUrl;對於每個完成的條目,請使用上述衝突安全規則將檔案下載到「下載」資料夾,並在聊天中內嵌顯示:
{
"action": "status",
"renderIds": "abc123"
}
對於最新的專案匯出,請省略 renderIds 並傳入 "latest": true。track_progress 用於生成/轉錄/上傳工作,而非渲染工作。
對於 NLE XML,請使用 format:"xml" 的 submit_export:
{
"format": "xml",
"nleFormat": "fcp_xml_resolve",
"timelineId": "abc123"
}
nleFormat 的值為 fcp_xml(適用於 Premiere XML,預設)和 fcp_xml_resolve(適用於 DaVinci Resolve XML)。對於非活躍時間線,請省略 timelineId,或傳入時間線 ID/前綴。請閱讀並回報導覽:XML 格式可能會遺失字幕、色塊、SVG、不支援的剪輯屬性以及未渲染的動態圖形。動態圖形僅在透明 ProRes MG 匯出流程提供 motionGraphicRenderKeys 時才能在 XML 中表示;否則匯出工具會報告它們已被遺棄。
對於素材庫來源下載,請對基於檔案的來源素材使用 request_asset_download。它會返回一個受保護的後端下載 URL/路徑,指向原始來源媒體。請勿使用 pull_asset 進行使用者下載;pull_asset 僅限沙箱使用。
對於字幕檔案,請使用 format:"subtitles" 的 submit_export:
{
"format": "subtitles",
"subtitleFormat": "srt"
}
格式為 srt 和 txt。匯出會使用字幕項目的實際時間線文字時間、來源範圍、翻譯變體、顯示文字覆寫以及分頁欄位(例如 wordsPerPage / maxCharactersPerLine),並建立一個持久化的可下載匯出工作。它適用於可下載的字幕檔案。它目前還不會重複使用瀏覽器 Remotion 字幕頁面規劃器,因此視覺換行/分頁在時間上是正確的,但近似於內嵌字幕分頁,並非位元組一致。對於非活躍時間線,請從 manage_timelines 或 read_project 傳入 timelineId。
若要將一個動態圖形匯出為透明的 ProRes 4444,請使用 export_motion_graphic_prores:
{
"itemId": "abc123",
"filenameMode": "asset"
}
匯出特定時間線實例時,優先使用 itemId,因為該項目攜帶即時的 propertyOverrides(例如編輯過的文字)。對素材庫動態圖形使用 assetId;後端在該素材存在時間線實例時,會使用第一個時間線實例,這與編輯器的素材庫匯出行為相符。若要匯出多個動態圖形,請在單次呼叫中傳入 itemIds 或 assetIds。每個動態圖形仍然會變成一個獨立的持久化渲染;使用返回的 renderIds 呼叫 track_export 來等待,然後透過每個返回的渲染下載路徑進行下載。
準備應參考已渲染動態圖形的 XML 時,請將 "filenameMode":"xml" 和相同的 timelineId 傳遞給 export_motion_graphic_prores,然後保留返回的 motionGraphicRenderKey / motionGraphicRenderKeys;在渲染完成後,將這些金鑰和相同的 timelineId 傳遞給 submit_export.motionGraphicRenderKeys,搭配 format:"xml"。
本地渲染(此版本)
所有渲染都在本地進行:submit_export / submit_render_job 驅動本地渲染服務(無頭 Chrome,使用與編輯器顯示的相同時間線狀態),直接從磁碟上的 /media/uploads/ 讀取媒體。對於磁碟支援的素材,不需要 S3、CLI 或等待的雲端工作。
submit_export:字幕/XML 同步返回;影片/音訊也會在此版本的呼叫中進行渲染(長時間處理的時間線可能需要一些時間——請警告使用者而不是輪詢)。submit_render_job+track_export:非同步路徑——立即返回一個renderId,使用track_export(renderIds/latest/onlyActive)進行輪詢,然後將返回的下載路徑交給使用者。- 仍然處於
blob:佔位符(上傳中)的素材尚無法渲染——請先等待track_progresstarget=upload 報告準備就緒,然後再提交。
備用方案
如果渲染失敗,因為某個素材的位元組缺失(佔位符從未重新連結,檔案從磁碟刪除):
- 要求使用者在「我的素材」(離線素材橫幅)中重新連結該素材,或重新匯入檔案。
- 對於 URL 來源的媒體,重新執行
download_media以還原位元組,然後重新提交。
除非正在除錯,否則不要告訴使用者他們需要了解 HTML-in-Canvas、Remotion 或儲存內部機制。請在產品層級解釋:
- "本地快速匯出"
- "素材還在上傳,稍等再匯"
- "需要先重新連結本地素材"
結果追蹤
對於 submit_export,記錄:
renderId- 時間線/範圍/解析度/編解碼器/影格率
- 使用者可以從編輯器渲染工作面板下載
記錄已上傳的素材 ID,以及當雲端匯出因僅限本機素材而被阻止時所嘗試的任何備用方案。