Blender VSEの動作確認用にフレーム番号がついたダミーのサンプル動画を作成したい。
やりたい事を整理すると以下になります。
- 60FPSで3秒ぐらいの動画の各フレームに連番の番号が付与されているサンプル動画を用意したい。
- フレーム番号のフォントスタイルやフレームの背景色を指定可能にしたい。
解決策
検討
以下の2案から検討し、案2 を採用しました。 PythonによるCLIツールとして作成します。
ImageMagick
と FFmpeg
を使う。
Image/Sequence ストリップ用素材 # 動画編集のためのBlender ストリップの種類とその追加方法 | kanta’s spike で紹介した方法。
Pythonスクリプト と FFmpeg
を使う。
フレーム番号を記載したテンプレート画像(SVG)を予め用意し、 フレーム番号部分をPythonにより書き換えたフレーム画像(SVG)を作成する。
あとは、フレーム画像をインプットとして FFmpeg
で動画に変換する。
方針
ツールの名前は、 create-test-video.py とします。
本ツールは、テンプレートSVG画像から、指定された時間分のテストビデオを作成するツールです。 テンプレートSVG画像に記載されたフレーム番号をツールが自動置換します。
また、テンプレートSVG画像は、Inkscapeなどのツールにより、事前に作成しておきます。
パラメータ | デフォルト値 | 説明 |
---|---|---|
テンプレートSVG | - | テンプレートとなるSVG画像のパスを指定する |
FPS | 60 | 生成する画像のフレームレートを指定する |
秒数 | 1 | 生成する動画の長さを指定する。 FPS×秒数 が生成するフレーム画像数になる |
フレーム画像生成ディレクトリ | テンプディレクトリ | テンプレートから生成するフレーム画像(SVG)を格納するディレクトリ |
フレーム番号のID | frame_no | SVG内のフレーム番号部分のID |
FFmpegのパス | /usr/local/bin/ffmpeg | ffmpegコマンドのパス |
出力動画パス | output.mp4 | 生成する動画ファイルのパス |
使い方の例は以下になります。
create-test-video.py --template template.svg --fps 60 --sec 3 --work-dir ./wk --output output.mp4
開発
以下のリポジトリでツールを作成しました。
-
実行例
python create-test-video.py -t ./sample_template/red_inkscape.svg -o sample_output/red.mp4 -d 3
-
作成結果
課題
FFmpeg で SVGを利用するためには、librsvgを有効にしてビルドする必要があるようです。
私の環境は macOS なのですが、Homebrew の ffmpeg では、librsvg は無効になっています。
そのため、Homebrew公式のffmpegを修正し、librsvg を有効にしたFomulaを用意しました。(差分)
以下によりffmpe
をアンインストール後に、
brew uninstall --ignore-dependencies ffmpeg
本Formulaをダウンロードし、以下を実行すると、 librsvg有効版ffmpegをビルド・インストールできます。(ビルドには時間がかかります。)
brew install --build-from-source --formula ffmpeg.rb
こんなことなら 案1 を採用すべきだったかもしれません。 しかし、案2 は、Inkscapeなどを使って、手軽にテンプレートを作成できるので、作成できるテストビデオを自由度を考えると 案2 で良かったと思います。