コース動画パイプライン は何をしますか?
コース録画をエンドツーエンドで処理し、ユーザーが要求する出力形状を保持します。独立したクリップを優先し、ユーザーが明示的に結合講義動画を要求した場合のみ結合します。ローカルソースや既存のリモート出力を削除する許可を推測しないでください。
処理前
- ユーザーのソースパスと宛先パスを正確に読み取ります。「全部ファイル」などの先頭ラベルは、リモートパスに存在しない限りUIテキストとして扱います。
- ダウンロード前に、リモートファイル名、サイズ、形式、既存の出力を検査します。
- ローカルの空き容量、利用可能なGPU、FFmpegコーデック、WhisperX環境、BaiduPCS-Goログインを確認します。
- ファイル名、文字起こしテキスト、動画構造をサンプリングした後、コースアダプターを選択します。既知のスタイルと未知のスタイルを検出するために、
references/course-adapters.mdを参照してください。 - 出力モード(個別クリップ、結合クリップ、またはその両方)を確認します。指定がない場合は個別クリップをデフォルトとします。
パイプライン
- 各ソース動画をダウンロードし、自然な順序を変更せずに検証します。
- ソースファイルを個別に文字起こしします。有効なトランスクリプトとクリップ計画を再利用し、GPU作業を繰り返さないようにします。
- 決定論的なクリップまたはユニットマニフェストを構築します。マーカーが曖昧な場合は、境界候補をレビューします。
- クリップをレンダリングし、クリップごとに1つのSRTを生成します。要求された場合のみ、結合動画と合成SRTを生成します。
- ラベル、出力ファイル名、ソースファイル名、ソースタイムスタンプ、再生時間、および適応に関する注意事項を含むMarkdownマニフェストを生成します。
- アップロード前に出力検証を実行します。
- ユーザーの正確なリモートディレクトリにアップロードし、リモートのファイル数とファイル名を検証します。
- 検証後、かつユーザーの削除許可範囲内でのみクリーンアップします。
必須出力契約
選択された各クリップまたは保持された知識ユニットについて、以下を提供します:
- 要求されたユニットがメタデータのみでない限り、1つのMP4。
- ベース名が一致する、タイムスタンプがリセットされた1つのSRT。
- 講義またはチャプターのMarkdownリスト内の1行。
- 安定した連続プレフィックスと、元のサンプルまたはユニットID。
結合モードの場合、個別に正規化されたクリップをローカルに保持し、1つの結合MP4と1つのタイムライン調整済み合成SRTを追加します。ユーザーが上書きまたは削除を明示的に要求しない限り、既存の結合版または非結合版を置き換えないでください。
実行上の注意
- ソース固有のトランスクリプトを使用し、出力クリップごとにタイムスタンプを0にリセットします。
- サポートされている場合は、h264_nvencによる正確なFFmpegトリミングを優先します。libx264にフォールバックし、正確な境界を黙ってスキップしないでください。
- Markdown内のコースの表現は維持し、ファイル名と管理用ラベルのみを正規化します。
- ソースの欠落、無効なタイムスタンプ、0バイトメディア、または説明のつかないカウント不一致が発生した場合は停止します。失敗したファイルのみを再試行します。
- 大規模なバッチの場合は、ダウンロード、文字起こし、レンダリング、アップロードの各ステージ後に具体的な進捗を報告します。
フルパイプライン実行前に references/workflow.md を参照してください。分割ポリシーを選択する際は references/course-adapters.md を参照してください。マニフェスト、Markdownリスト、アップロード、検証、クリーンアップを構築する際は references/manifest-upload.md を参照してください。