■movie_on_playing_v02.rb →
ダウンロード
Ruby2.2で動作確認していますが,2.x,若しくは古いバージョンでも動作すると思われます.
実行方法: ruby movie_on_playing.rb control.txt
合成したい動画と,control.txtファイルを用意します.別途ffmpegをインストールしておいて下さい.
■v02変更点:
・複数行で構成された動画を作成出来るように変更.(横だけでなく,縦に連結可能)
・その他,幾つかのバグを修正.
■簡易説明付きcontrol.txt →
ダウンロード
「キーワード」 「値」を羅列したファイルを用意します.キーワードは以下の通りです.
ffmpeg [ffmpegのパス]
work [作業用のディレクトリ名]
out [出力ファイル名]
以下のキーワードは,動画の数と同数記述します.省略する事は出来ません.
movie [動画のパス]
動画の所在を記述します.コマンド実行場所と同様,若しくは相対パスが可能です.
resize [X]x[Y]
最初にリサイズする値を指定します.リサイズしない場合でも(元動画のサイズを)記述します.以下にある"crop"は,このリサイズ後の値を元にします.
volume [%]
動画の音量(基準は100%).元の動画の音量が大き過ぎる場合は小さい値,小さ過ぎる場合は大きい値にします.
fadein [frame]
動画が表示されるまでのフェードイン時間を,フレーム数で指定します.このスクリプトは30fpsを想定しているため,1秒の場合は30と記述します.
delay [s]
動画が表示されるまでの遅延時間を(単位:秒で)指定します.他の動画より早く始まってしまう場合はプラスの値(開始を遅らせる),遅く始まってしまう場合はマイナスの値(動画の前を削り,開始を早める)を指定します.プラスの値の方が内部でやや複雑な処理を行っているため,それぞれの動画を演奏開始までに数秒のマージンを取り,マイナスの値を指定する方が不具合は起きにくくなるようです.
time [s]
動画が終了する時間を(単位:秒で)指定します.これは,上の"delay"の値とは無関係で,元動画の時間を基準に決定します.
crop [startX]x[startY] [sizeX]x[sizeY]
動画の切り抜きの方法を指定します.startX/Yは,左上を基準とした切り抜き開始座標,sizeX/Yはその基準からの切り抜きのサイズです.このsizeX/Yが,その動画の最終的なサイズをなり,これを動画の数の分並べたものが,最終的な動画のサイズとなります.
skip [off/on]
動画の処理を省略するかどうかで,通常は"off"を指定します.1度処理を実行すると,各動画の音が微妙にズレてしまう事が多く,「1つ目と3つ目の動画のタイミングは問題ないが,2つ目の動画の"delay"を変更して何回も実行して調整する」と言った作業が多くなります.この場合,workディレクトリは同様で1つ目と3つ目の動画に対してはskipを"on"とすると,一連の処理を省略するため,処理時間が向上します.勿論,この場合に1つ目と3つ目の動画で指定している他の記述は反映されません.
以下のキーワードは,必要な時に引数無し(キーワードのみの記述)で指定します.
row_div
動画を縦に並べる際に使用します.例えば4つの動画を横に2,縦に2と並べる場合,上までの一連のキーワードを動画2個分を指定した後,"row_div"を1回指定し,その後に動画2個分のキーワードを指定します.