機能概要
ソース動画を受け取り、縦型(9:16)にトリミングし、キャプションを焼き込んだ単一のH.264/AACファイルを生成します。出力は短尺プラットフォーム向けに最適化されています。
前提条件
ffmpegとffprobeがPATHに含まれていること~/workspace/inputへの読み取りアクセス権~/workspace/outputへの書き込みアクセス権
環境確認
最初に以下のコマンドを実行します。
command -v ffmpeg && command -v ffprobe
どちらかが欠けている場合は、処理を中断して報告します:MISSING_DEP: ffmpeg。代替エンコーダへのフォールバックは試みません。
手順
-
入力ファイルの存在を確認:
test -f ~/workspace/input/source.mp4存在しない場合は、
MISSING_INPUT: ~/workspace/input/source.mp4と報告します。 -
ファイルに触れる前に解像度をプローブ:
ffprobe -v error -select_streams v:0 -show_entries stream=width,height \ -of csv=p=0 ~/workspace/input/source.mp4 -
出力ディレクトリが存在することを確認:
mkdir -p ~/workspace/output -
トリミングを実行:
bash scripts/cut.sh ~/workspace/input/source.mp4 ~/workspace/output/final.mp4 -
結果が実際のファイルであることを確認し、パスとサイズを報告:
ls -lh ~/workspace/output/final.mp4
決して仮定しないこと
- 入力がすでに9:16であると仮定しない — 常に最初にプローブする。
~/workspace/outputが存在すると仮定しない —mkdir -pで作成する。- 既存の出力ファイルをユーザーの確認なしに上書きしない。
- ソースに音声トラックがあると仮定しない — 以下で確認する:
ffprobe -select_streams a -show_entries stream=codec_type -of csv=p=0
出力
~/workspace/output/final.mp4 — H.264, 1080x1920, AAC オーディオ, -crf 20。
エラー処理
ffprobeが失敗 → ファイルが有効な動画ではない。BAD_INPUTと報告。cut.shがゼロ以外で終了 → 標準エラー出力をそのまま表示。無闇にリトライしない。- 出力が0バイト →
EMPTY_OUTPUTと報告して停止。