動画編集用のラッシュ映像を生成するPythonツールです。複数の動画や画像ファイルを結合し、タイムコード、カット情報、スタッフ情報などを表示したプレビュー用の動画を生成します。
- 複数の動画/画像ファイルの結合
- タイムコード、タイムシート、フレーム番号の表示
- プロジェクト情報とカット情報の表示
- スタッフ情報の表示
- 動画が存在しないカットの自動補完
- Python 3.6以上
- OpenCV (opencv-python)
- その他の依存パッケージ(requirements.txtに記載)
# 依存パッケージのインストール
pip install -r requirements.txt
# 開発用パッケージのインストール(テスト実行時に必要)
pip install -r requirements-dev.txtプロジェクトは以下のような構造になっています:
project/
├── project_info.csv # プロジェクト設定ファイル
├── cut_info.csv # カット情報ファイル
├── videos/ # ビデオファイル
│ ├── A0001/ # カット番号のフォルダ
│ │ └── A0001.mov # 動画ファイル
│ ├── A0002/
│ │ └── A0002.png # 画像ファイル
│ └── ...
└── out/ # 出力フォルダ
注: プロジェクトには基本的なサンプルファイル(CSVファイル2つとサンプルビデオ)が含まれています。
プロジェクトの基本設定を定義します。
project_name,width,height,fps
MyProject,1920,1080,30
各フィールドの説明:
- project_name: プロジェクト名(文字列)
- 動画の左上に表示されます
- 日本語を含む任意の文字列が使用可能
- width: 出力動画の幅(ピクセル)
- 推奨値: 1920(フルHD)
- 入力素材は自動的にこのサイズにリサイズされます
- height: 出力動画の高さ(ピクセル)
- 推奨値: 1080(フルHD)
- 入力素材は自動的にこのサイズにリサイズされます
- fps: フレームレート(1秒あたりのフレーム数)
- 整数値で指定(例:24, 30, 60)
- タイムコードの計算に使用されます
- 入力素材のフレームレートに関係なく、出力動画はこのフレームレートで生成されます
- 極端に高いフレームレートでの動作は未検証です
各カットの情報を定義します。
cut_number,seconds,frames,status,take,staff
A0001,5,0,OK,Take1,John
A0002,3,15,NG,Take2,Mike
- cut_number: カット番号(ビデオディレクトリ内のフォルダ名と一致させる)
- seconds: カットの長さ(秒)
- frames: 追加フレーム数
- status: カットのステータス(OK/NG等)
- take: テイク番号
- staff: 担当者名
# デフォルトの設定を使用する場合(カレントディレクトリのファイルを使用)
python rush_generator.py
# ビデオディレクトリとCSVファイルのパスを指定する場合
python rush_generator.py --videos-dir path/to/videos \
--project-csv path/to/project_info.csv \
--cut-csv path/to/cut_info.csv \
--output-dir path/to/output
# videosディレクトリやCSVのパス、出力ディレクトリを指定した場合のサンプル
python rush_generator.py --videos-dir videos \
--project-csv project_info.csv \
--cut-csv cut_info.csv \
--output-dir custom_output指定したビデオディレクトリ内に、各カット番号のフォルダを配置します:
指定したディレクトリ/
└── A0001/ # カット番号のフォルダ
└── A0001.mov # 動画ファイル
各カットフォルダ内には、そのカットの動画ファイルまたは画像ファイルを配置します。
--videos-dir: ビデオファイルが格納されているディレクトリのパスを指定します- デフォルト値:
videos(カレントディレクトリ内の'videos'フォルダ) - 絶対パスまたは相対パスを指定可能
- 指定したディレクトリが存在しない場合はエラーが表示されます
- デフォルト値:
--project-csv: プロジェクト情報CSVファイルのパスを指定します- デフォルト値:
project_info.csv(カレントディレクトリ内のファイル) - 絶対パスまたは相対パスを指定可能
- 指定したファイルが存在しない場合はエラーが表示されます
- デフォルト値:
--cut-csv: カット情報CSVファイルのパスを指定します- デフォルト値:
cut_info.csv(カレントディレクトリ内のファイル) - 絶対パスまたは相対パスを指定可能
- 指定したファイルが存在しない場合はエラーが表示されます
- デフォルト値:
--output-dir: 出力ファイルを保存するディレクトリのパスを指定します- デフォルト値:
out(カレントディレクトリ内の'out'フォルダ) - 絶対パスまたは相対パスを指定可能
- 指定したディレクトリが存在しない場合は自動的に作成されます
- デフォルト値:
実行すると、以下の処理が行われます:
- project_info.csvとcut_info.csvから設定を読み込み
- 指定されたビデオディレクトリ内の各カットフォルダを処理
- 動画/画像ファイルにキャプション情報を追加
- 全てのカットを結合
- outフォルダに結果を出力(ファイル名:rush_YYYYMMDDHHMM.mp4)
生成される動画には以下の情報が表示されます:
- 左上: プロジェクト名
- 左下: タイムシート情報
- 中央上: カット番号、テイク番号、ステータス
- 中央: 総タイムコード
- 右上: スタッフ情報
- 右下: ファイル更新日
- 下部中央: タイムコード、タイムシート、フレーム番号
- 動画ファイルは.mp4, .avi, .movに対応
- 画像ファイルは.jpg, .png, .jpegに対応
- カットフォルダが空の場合は、指定された長さの単色塗りの動画が生成されます
- カットフォルダが存在しない場合も、空のフォルダと同様に単色塗りの動画が生成されます
