現在のカットにキャプションを付ける
配置されたトラックとトランスクリプトドキュメント(transcript.json)を含む保存済みプロジェクトを使用します。 $PROJECT_IDと$REVISIONは現在のカットを参照します。タイミング編集後にドラフトします。 $PLACEHOLDERSを実際の値に置き換え、リストされたcutbolt_* 呼び出しをコマンドなしで送信するか、 cutbolt_runをcommand/argumentsとともに使用します。job.startでのブロッキングレンダリングを維持します。
{"command":"captions.draft","project":{"project_id":"$PROJECT_ID"},"transcripts":[{"file":"transcript.json"}]}
返されたドキュメントのキューテキストとタイミングを確認し、$CAPTION_DOCUMENTとして保持します。 レンダリング前に認識エラーを修正します。$FONTはフォント識別子/パスオブジェクトです(例:{"path":"font.ttf"})。 またはfonts.findから取得した明確なインストール名です。$FONT_SIZE、$LINE_HEIGHT、$CAPTION_RECTは プロジェクトに適合するピクセルレイアウト値です。実際のキューに十分なスペースを選択します。 オーバーフローは拒否されるため、切り捨てられたテキストが黙って通過することはありません。
{"command":"job.start","request_id":"caption-render","run":"captions.render","arguments":{"document":"$CAPTION_DOCUMENT","project":{"project_id":"$PROJECT_ID"},"layouts":{"default":{"fonts":["$FONT"],"size":"$FONT_SIZE","rect":"$CAPTION_RECT","line_height":"$LINE_HEIGHT","letter_spacing":0,"wrap":"none","overflow":"reject"}},"output":"caption-edits.json","mode":"generated","track_id":"captions","asset_id":"caption"}}
$JOB_IDは返されたチケットです。
{"command":"job.wait","job_id":"$JOB_ID","timeout_seconds":120}
ステータスがcompletedになった場合のみ続行します。result.operationsを$CAPTION_OPERATIONS (ファイル参照)として、result.expected_revisionを$CAPTION_REVISIONとして保持します。記録されたリビジョンでその提案を適用します。 このコマンドは、キャプショントラックが存在しない場合に作成します。既に重複するキャプションが存在する場合は、 意図した古いクリップを明示的に削除し、新しい先頭に対して再度準備します。 キャプションを重複させたり、無関係なグラフィックを上書きしたりしないでください。
{"command":"session.apply","project_id":"$PROJECT_ID","expected_revision":"$CAPTION_REVISION","request_id":"attach-captions","operations":"$CAPTION_OPERATIONS"}
新しいリビジョンを保持します。代表的な時刻(最初と最後のキューを含む)で実際のキャプションをエクスポートして検査します。 このステップ後のタイミング編集には、再生成されたキャプションが必要です。 保存されたクリップは編集可能なシーンレシピを保持し、フッテージから直接レンダリングされます。 中間的なキャプションムービーはコンパイルされません。後でテキスト/タイミング編集を行うためにキャプションドキュメントを保持します。
ローカルフォントを使用する場合はパスオブジェクトを使用し、文字列はインストールされたフォントファミリー名を指定します。 インストールされたフォントが見つからないか曖昧な場合は、fonts.findから使用可能な識別子を取得します。テキストオーバーフローの場合は、 ボックス/フォント/キューのレイアウトを調整し、新しい出力ファイル名を使用します。古いリビジョンの場合は、 アタッチ前にタイムラインのタイミングが変更されたかどうかを確認します。不確かな編集のリクエストIDを再利用し、 session.receiptを検査します。job.waitがチケットを返すことは、レンダリングが完了した証拠にはなりません。
このワークフローはWindowsとLinuxで動作し、外部のFFmpeg/ffprobeを使用します。音声認識は、 必要な場合、別途設定されたローカルランタイムとモデルが必要です。録音とハードウェアデコードには Linux向けのバックエンドはありません。このプラグインはエンジン、フォント、モデル、メディアツールをバンドルしていません。