mieki256's diary



2021/07/04() [n年前の日記]

#1 [love2d] ffmpegの指定例のまとめ

ffmpegを使って、RGBA動画のアルファチャンネルと、RGB部分を、上下に並べた動画を作成する手順を、忘れないうちに再度メモ。

要するに、以下のような見た目の動画を作りたい。

comb_frame.png

どうしてこういう見た目の動画を作りたいのか。それは、アルファチャンネルを含めることができない動画フォーマット(.ogv等)を使いながら、アルファチャンネルを適用しているかのような見せ方をするため。例えば love2d は、ogvフォーマットしか扱えないので、こういう頓智(?)が必要になる。

draw_video_alpha2_about.png

環境は、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つの動画を使って動画の一部を透明に見せかける

以上です。

過去ログ表示

Prev - 2021/07 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project