複数画像や映像の異なるフレームのピクセル中央値を返すことで長時間露光したような動く部分だけが消えて背景だけの映像が作れる。入力するファイル数や参照フレームを多くしたり、解像度やフレームレートが高いとそれだけ負荷も高くなる。
基本コマンド
3つの画像のピクセル中央値にした画像に変換。
ffmpeg -i img1.jpg -i img2.jpg -i img3,jpg -filter_complex xmedian=3 output.jpg
同じ動画は読み込み開始時間をずらす。以下は3秒と6秒ずらした例。異なる PTS の動画を合わせているのでsetpts
フィルタでリセットしている。
ffmpeg -i video.mp4 -ss 3 -i video.mp4 -ss 6 -i video.mp4 -filter_complex xmedian=3,setpts=PTS-STARTPTS -c:a copy output.mp4
公式ドキュメント:FFmpeg Filters Documentation : xmedian
オプション
- inputs[int]
入力ファイル数
既定値:3
範囲:3 から 255 まで - planes[int]
フィルタを当てるチャンネル指定
詳しくは ffmpeg について | チャンネルの順番と注意点を参照
既定値:15(すべてのチャンネル)
範囲:0 から 15 まで - percentile[float]
百分位数の指定。0.5 なら中央値。0 なら最小値。1 なら最大値
既定値:0.5
範囲:0 から 1 まで
11の動画を使ったバッチファイル例。60秒間出力。
ffmpeg -i %1 -ss 3 -i %1 -ss 6 -i %1 -ss 9 -i %1 -ss 12 -i %1 -ss 15 -i %1 -ss 18 -i %1 -ss 21 -i %1 -ss 24 -i %1 -ss 27 -i %1 -ss 30 -i %1 -filter_complex "xmedian=11,setpts=PTS-STARTPTS" -c:a copy -t 60 %~d1%~p1%~n1-xmedian.mp4 pause