ffmpeg で使える frei0r フィルタの使い方


Zeranoe FFmpeg では有効化されているものの、予め DLL を読み込ませないとフィルタが使えない frei0r フィルタの使い方。

Zeranoe FFmpeg のフォーラムから Win32、Win64 の使うバージョンの DLL を保存し解凍する。

顔認識のライブラリは frei0r-1.4.7z – osspack32 – frei0r 1.4 complete plugins for ffmpeg – Unofficial OSS packages compiled with MinGW (mainly 32bit only) – Google Project Hosting配布している。

次に、set FREI0R_PATH で DLL のディレクトリを読み込ませる。

set FREI0R_PATH=frei0r-20121203-git-f4bac51-filters-win64

すると frei0r フィルタが使えるようになるが、mixer2 や、mixer3 のフィルタの使い方がよく分からない。ここで言う mixer2 や、mixer3 のフィルタとはソースコードの src ディレクトリにあるフィルタのことである。出力は全てのプラグインで RGBA になるので動画にする場合は用途に応じてフォーマット変換 format が必要。

公式サイト:Frei0r :: Free Video Effects collection
ソースコード:dyne/frei0r: a large collection of free and portable video plugins
Git:git://github.com/dyne/frei0r.git

コンパイル方法は以下を参照
MLT – Documentation
外部ライブラリ:frei0r – eingusteの日記

ffmpeg の公式サイトやヘルプコマンドで見てもフィルタの使い方が詳しく書いてないので別のページからフィルタの使い方を調べる。

公式ドキュメント:FFmpeg Filters Documentation : frei0r
frei0r の引数が調べられる:PluginsFilters < MLT < TWiki
フィルタの説明:frei0r

frei0r フィルタの中には ffmpeg と同名のフィルタもあったりするが、ffmpeg のネイティブフィルタの方が速いので同名のフィルタの場合は ffmpeg のを使う方がよい。また bool 型は 0, 1 ではなくて n, y で指定する。オプションの数値には計算式が使えないので値だけを入力する。

特徴的なフィルタの例

サンプル動画は sm26266572 マリカー動画の開始5秒から10秒までの5秒間。rgbnoise だけ容量が大きいので1秒。

  • baltan
    残像を残すフィルタ。引数無し
    ffplay -f lavfi -i testsrc2 -vf frei0r=baltan
  • delaygrab
    波紋フィルタ。動いているところが球面のように広がる。引数無し
    ffplay -f lavfi -i testsrc2 -vf frei0r=delaygrab
  • distort0r
    映像が右下方向に拡大縮小する
    1引数:動かす距離、0 から 1 まで float 指定、既定値:1
    2引数:動かす頻度、0 から 1 まで float 指定、既定値:0.005
    FilterFrei0r-distort0r < MLT < TWiki
    ffplay -f lavfi -i testsrc2 -vf "frei0r=distort0r:1|.0005"
  • facebl0r
    人間の顔を認識して映像をぼかす
    ffplay -i "人の顔データ" -vf frei0r=facebl0r
  • facedetect
    人間の顔を認識して○をオーバーレイする
    最初の引数の Classifier の指定方法が分からないので他の引数が変更できない
    ffplay -i "人の顔データ" -vf frei0r=facedetect
  • perspective
    映像を傾けてゆがませるフィルタ。左上隅を縦軸横軸の00とする
    1引数:左上の横座標の相対位置、0 から 1 まで float 指定、既定値:0
    2引数:左上の縦座標の相対位置、0 から 1 まで float 指定、既定値:0
    3引数:右上の横座標の相対位置、0 から 1 まで float 指定、既定値:1
    4引数:右上の縦座標の相対位置、0 から 1 まで float 指定、既定値:0
    ffplay -f lavfi -i testsrc2 -vf "frei0r=perspective:0.2/0.2|0.8/0.2"
  • pixeliz0r
    モザイクを掛けるフィルタ
    モザイク自体の荒指定しか出来ないので特定場所にモザイクを掛ける場合は crop と overlay を併用する。モザイク掛ける範囲は8の倍数を指定しないと斜めにモザイクがかかりきれいな四角にならない。小さい値ほどモザイクが緻密になる
    1引数:モザイク1サイズの縦相対ピクセル
    0 から 1 まで float 指定、既定値:0.0194444
    2引数:モザイク1サイズの横相対ピクセル
    0 から 1 まで float 指定、既定値:0.0243056

    既定値からの倍率の目安

    10 0.194444 0.243056
    9 0.1749996 0.2187504
    8 0.1555552 0.1944448
    7 0.1361108 0.1701392
    6 0.1166664 0.1458336
    5 0.097222 0.121528
    4 0.0777776 0.0972224
    3 0.0583332 0.0729168
    2 0.0388888 0.0486112
    1 0.0194444 0.0243056
    0.9 0.01749996 0.02187504
    0.8 0.01555552 0.01944448
    0.7 0.01361108 0.01701392
    0.6 0.01166664 0.01458336
    0.5 0.0097222 0.0121528

    FilterFrei0r-pixeliz0r < MLT < TWiki ffplay -f lavfi -i testsrc2 -vf "split[a][b];[a]crop=iw/2:ih/2:0:0,frei0r=pixeliz0r:.0194444|.0243056[moz];[b][moz]overlay"

  • primaries
    原色だけに変換するフィルタ
    1引数:使う色の数を指定(最大32色)する、0 から 1 まで float 指定、既定値:1
    FilterFrei0r-primaries < MLT < TWiki ffplay -f lavfi -i testsrc2 -vf "frei0r=primaries:1"
  • rgbnoise
    ノイズを生成するフィルタ
    1引数:ノイズの発生頻度、0 から 1 まで float 指定、既定値:0.2
    FilterFrei0r-rgbnoise < MLT < TWiki ffplay -f lavfi -i testsrc2 -vf "frei0r=rgbnoise:.2"
  • scanline0r
    ブラウン管のような横の縞々模様を載せるフィルタ。引数無し
    ffmpeg のネイティブフィルタで実装するなら drawgrid フィルタを使う
    ffplay -f lavfi -i testsrc2 -vf frei0r=scanline0r
  • sobel(ソーベル)
    エッジ検出フィルタのエッジのカラー版。引数無し
    ffmpeg にも sobel フィルタがある
    ffplay -f lavfi -i testsrc2 -vf frei0r=sobel
  • transparency
    透過フィルタ。映像の透過具合を指定できる
    1引数:透過具合の指定、0 から 1 まで float 指定、既定値:0
    FilterFrei0r-transparency < MLT < TWiki
    ffplay -f lavfi -i testsrc2 -vf split[a][b],[a]scale=iw/2:-1,frei0r=transparency:.4[aa],[b][aa]overlay
  • ffmpeg のネイティブフィルタで実装するなら
    ffplay -f lavfi -i testsrc2 -vf split[a][b],[a]scale=iw/2:-1,format=yuva420p,lutyuv=val:val:val:128[aa],[b][aa]overlay

  • vertigo
    めまいフィルタ。映像がにじむような効果がある
    1引数:映像の揺れ具合の指定、0 から 1 まで float 指定、既定値:0.02
    2引数:映像の拡大具合の指定、0 から 1 まで float 指定、既定値:0.202
    FilterFrei0r-vertigo < MLT < TWiki
    ffplay -f lavfi -i testsrc2 -vf "frei0r=vertigo:.02|.202"

frei0r_src は -f lavfi -i 形式で読み込めるソースデータ。filter_params 引数の数はソースコードを参照。onecol0r には 0xffffff 形式も可能。lissajous0r はリサジュー図形。
ffplay -f lavfi -i "frei0r_src=size=200x200:framerate=10:filter_name=onecol0r:filter_params=red"
ffplay -f lavfi -i "frei0r_src=size=200x200:framerate=10:filter_name=nois0r:filter_params=10"
ffplay -f lavfi -i "frei0r_src=size=200x200:framerate=10:filter_name=lissajous0r:filter_params=10"
ffplay -f lavfi -i "frei0r_src=size=200x200:framerate=10:filter_name=ising0r:filter_params=10"
ffplay -f lavfi -i "frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=10"

公式ドキュメント
FFmpeg Filters Documentation : frei0r
FFmpeg Filters Documentation : frei0r_src

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)