2021/07/04(日) [n年前の日記]
#1 [love2d] ffmpegの指定例のまとめ
ffmpegを使って、RGBA動画のアルファチャンネルと、RGB部分を、上下に並べた動画を作成する手順を、忘れないうちに再度メモ。
要するに、以下のような見た目の動画を作りたい。
どうしてこういう見た目の動画を作りたいのか。それは、アルファチャンネルを含めることができない動画フォーマット(.ogv等)を使いながら、アルファチャンネルを適用しているかのような見せ方をするため。例えば love2d は、ogvフォーマットしか扱えないので、こういう頓智(?)が必要になる。
環境は、Windows10 x64 20H2 + ffmpeg version 4.4-full_build-www.gyan.dev。
ここまでの指定で、以下のような感じの動画が、ffmpegのみを使って作成できる。
_comb_60fps.ogv
love2d 上での利用の仕方は、以下を参照のこと。
_love2dで2つの動画を使って動画の一部を透明に見せかける
要するに、以下のような見た目の動画を作りたい。
どうしてこういう見た目の動画を作りたいのか。それは、アルファチャンネルを含めることができない動画フォーマット(.ogv等)を使いながら、アルファチャンネルを適用しているかのような見せ方をするため。例えば love2d は、ogvフォーマットしか扱えないので、こういう頓智(?)が必要になる。
環境は、Windows10 x64 20H2 + ffmpeg version 4.4-full_build-www.gyan.dev。
◎ 連番画像からRGBA動画を作成。 :
blender等で出力した、アルファチャンネルを含む連番画像(.png)を、RGBA動画に変換。
ffmpeg -framerate 60 -i ..\render\%04d.png -vcodec utvideo rgba.avi
- -framerate 60 で、60fps を指定。
- -i %04d.png で、0001.png - xxxx.png といった連番画像を指定。
- -vcodec utvideo で、UtVideoフォーマット(可逆圧縮。アルファチャンネルも格納可能)を指定。
- 最後に、出力するaviファイル名(rgba.avi)を指定。
◎ アルファチャンネルを白黒動画として取り出し。 :
RGBA動画から、アルファチャンネルだけを白黒動画として取り出す。
ffmpeg -i rgba.avi -vcodec utvideo -vf alphaextract mask.avi
- -i rgba.avi で、入力動画ファイル名を指定。
- -vf alphaextract で、アルファチャンネルのみを取り出すことを指定。
◎ RGBA動画の背景に黒一色の画像を合成。 :
事前に、動画サイズと同じサイズの、黒一色の背景画像(black.png)を用意して、RGBA動画をその上に合成する。
ffmpeg -framerate 60 -i black.png -r 60 -i rgba.avi -filter_complex "overlay=x=0:y=0" -vcodec utvideo rgb.avi
- -framerate 60 や -r 60 でFPS(フレームレート)を指定。記述する位置に注意。
- -filter_complex "overlay=x=0:y=0" で、(0,0)の位置に2番目の動画を合成する。
◎ 映像を上下に並べる。 :
アルファチャンネルを取り出して作った mask.avi と、背景に黒を合成した rgb.abi を、上下に並べた動画を作成。
ffmpeg -i mask.avi -i rgb.avi -filter_complex "vstack" -vcodec utvideo comb.avi
- -filter_complex "vstack" で、2つの動画を上下に並べる。
◎ ogv (Theora and Vorbis) に変換。 :
ffmpeg -i comb.avi -c:v libtheora -q:v 10 comb.ogv
- -c:v libtheora -q:v 10 で、ogv (Theoraフォーマット)、クオリティ=10を指定。
ここまでの指定で、以下のような感じの動画が、ffmpegのみを使って作成できる。
_comb_60fps.ogv
love2d 上での利用の仕方は、以下を参照のこと。
_love2dで2つの動画を使って動画の一部を透明に見せかける
[ ツッコむ ]
以上です。