ffmpegというツールは単なる動画コンバーターだと思っていたが、実はそうでないことに今更気づいた。単なるコンバーターではなく動画を加工/生成することができるツールであったのだった。ffmpegをインストールしてみたら次のコマンドを実行してみるといい。マンデルブロート図形が描かれそれがどこまでも拡大されていく。私はしばらくみとれてしまった。
ffplay -f lavfi -i mandelbrot
特にフィルター・グラフに関しては実に多彩で、音声ファイルをベースにスペクトラムと波形表示をするようなことであれば簡単にできてしまうのだ。ただフィルター・グラフの定義は独特で最初見たときは何のことやらさっぱりわからなかったが。以下は音源のみで作成した動画である。
この動画は以下のコマンドラインで作成された。
ffmpeg -i (入力WAVEファイル名) -filter_complex "[0:a]avectorscope=s=640x518,pad=1280:720[vs]; [0:a]showspectrum=mode=separate:color=intensity:scale=cbrt:s=640x518[ss]; [0:a]showwaves=s=1280x202:mode=line[sw]; [vs][ss]overlay=w[bg]; [bg][sw]overlay=0:H-h[out]" -map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 output.mp4
これはEncode/YouTube – FFmpegのサンプルにちょこっとだけ手を加えただけのものであるが、このような動画がコマンドラインで作れること自体驚きであった。
ただフィルタ・チェインの定義はわかりにくいものであることは間違いないので、今作っているツールにフィルタ・グラフを視覚的に定義できるUIを作れたらなと思う。その前にffmpegに精通しなければならないが。どうも今はその方向に興味が行ってしまっていてやりたくてうずうずしているところだ。明日の朝は醒めているかもしれないが。