連続したフレームのピクセル値を任意の割合で混ぜ合わせるtmixフィルタの使い方。
複数入力した映像を混ぜ合わせるならmix
フィルタがある。
複数の映像を任意の割合でミックスする mix
基本コマンド
連続した3フレームを3で割った1フレームで出力する。
ffmpeg -i input -vf "tmix=frames=3:weights=1 1 1:scale=0" -c:a copy ouput
ffplay -i input -vf "tmix=frames=3:weights=1 1 1:scale=0"
フレームを混ぜてfpsを減らすにはselect
フィルタを併用する。
ffplay -i input -vf "tmix=frames=3:weights=1 1 1",select='not(mod(n\,3))'
特定の映像フレームや音声サンプルを出力するselect, aselect
ffmpeg – How do I blend/average N amount of frames as opposed to only 2? – Super User
公式ドキュメント:FFmpeg Filters Documentation : tmix
オプション
- frames[int]
連続したフレーム数の指定
既定値:3
範囲:1から128まで - weights[string]
入力の比重指定。入力毎にスペースを空ける
既定値:”1 1 1″ - scale[float]
各ピクセルの値とweightsの積の和に掛ける値。0だと連続するフレームの和になる
既定値:0
範囲:0から32767まで
scaleの扱い
0以外を指定するとマスクのようなピクセル値になるが2極値化はそのままではしないので用途が思いつかない。scale=3とscale=4の例。
ffplay -i input -vf split[0v][1v];[0v]tmix=frames=3:weights="-1 2 -1":scale=3,signalstats,drawtext=fontfile=C\\://WINDOWS/Fonts/arial.ttf:textfile=signalstat_drawtext.txt:fontsize=20:borderw=1:bordercolor=white[0v];[1v]tmix=frames=3:weights="-1 2 -1":scale=4,signalstats,drawtext=fontfile=C\\://WINDOWS/Fonts/arial.ttf:textfile=signalstat_drawtext.txt:fontsize=20:borderw=1:bordercolor=white[1v];[0v][1v]vstack