カテゴリー別アーカイブ: FFmpeg

音声のダイナミックレンジを広げる crystalizer

ffmpeg 3.2 でリリース予定のオーディオフィルタ。単純なアルゴリズムで音声のダイナミックレンジを広げる crystalizer フィルタの使い方。

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -af crystalizer=i=2:c=1 output
ffmpeg -i input -af crystalizer=2:1 output
ffplay -i input -af crystalizer=2:1

公式ドキュメント:FFmpeg Filters Documentation : crystalizer
続きを読む 音声のダイナミックレンジを広げる crystalizer

平均ブラー avgblur

ffmpeg 3.2 でリリース予定のビデオフィルタ。隣り合うピクセルを平均化してぼかす avgblur フィルタの使い方。似たフィルタに gblur があるが、こちらは縦横に伸ばしたように輝度差がわかりやすい。

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -vf avgblur=sizeX=1:planes=15:sizeY=0 output
ffmpeg -i input -vf avgblur=1:15:0 output
ffplay -i input -vf avgblur=1:15:0

公式ドキュメント:FFmpeg Filters Documentation : avgblur
続きを読む 平均ブラー avgblur

ガウシアンブラー gblur

ffmpeg 3.2 でリリース予定のビデオフィルタ。ガウシアンカーネルを使ってしてぼかす gblur フィルタの使い方。カーネルについては convolution フィルタでも使えるが、具体的な内容は省略。似たフィルタに avgblur があるが、こちらは満遍なくブラーを掛ける一般的なぼかしフィルタのイメージ。

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -vf gblur=sigma=0.5:steps=1:planes=15:sigmaV=-1 output
ffmpeg -i input -vf gblur=.5:1:15:-1 output
ffplay -i input -vf gblur=.5:1:15:-1

公式ドキュメント:FFmpeg Filters Documentation : gblur
続きを読む ガウシアンブラー gblur

エッジ検出フィルタ sobel, prewitt

ffmpeg 3.2 でリリース予定のビデオフィルタ。エッジ検出フィルタに単体では edgedetectfrei0rsobel があり、カーネルを指定する convolution でもエッジ検出ができるが、今回のこれらのフィルタは手軽でエッジ部分の線が太いのでマスクするのにも便利。sobelprewitt はカーネルが少し異なるがオプションは同じである。

ffmpeg でエッジ検出をする edgedetect
ffmpeg で使える frei0r フィルタの使い方
先鋭化やぼかし、エンボス処理などができる convolution
ffmpeg でエッジマスク

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -vf sobel=planes=15:scale=1:delta=0 output
ffmpeg -i input -vf sobel=15:1:0 output
ffplay -i input -vf sobel=15:1:0

公式ドキュメント:FFmpeg Filters Documentation : sobel
公式ドキュメント:FFmpeg Filters Documentation : prewitt
続きを読む エッジ検出フィルタ sobel, prewitt

2つの連続したフィールドを1つのフレームで出力する weave

ffmpeg 3.2 でリリース予定のビデオフィルタ。フィールドを合わせてフレームにする weave フィルタの使い方。縦解像度が2倍になり、フレームレートとフレーム数は2分の1になる。

基本コマンド

separatefields でフィールド分解したのをフレームに戻す。つまり何も変わらない
ffmpeg -i input -vf separatefields,weave output
ffplay -i input -vf separatefields,weave

tinterlace フィルタの tinterlace=0 と同じことができる

公式ドキュメント:FFmpeg Filters Documentation : weave
続きを読む 2つの連続したフィールドを1つのフレームで出力する weave

複数の映像を1つの映像に交互に挟む interleave

2以上の映像を交互に1つの連続した映像で出力する interleave フィルタの使い方。出力フレーム数は1入力のフレーム数が上限になるので複数映像を交互に挟んで出力する場合はあらかじめフレーム数を減らしておく必要がある。

基本コマンド

偶数と奇数フレームに分けて合わせている。適宜 null フィルタを変更。このコマンドでは何も変化しない
ffmpeg -i input -vf "split[0][1];[0]select=(mod(n-1\,2)),null[0a];[1]select=(mod(n\,2)),null[1a];[0a][1a]interleave=2" output
ffplay -i input -vf "split[0][1];[0]select=(mod(n-1\,2)),null[0a];[1]select=(mod(n\,2)),null[1a];[0a][1a]interleave"

公式ドキュメント:FFmpeg Filters Documentation : interleave, ainterleave
続きを読む 複数の映像を1つの映像に交互に挟む interleave

ウェーブレットデノイザ vaguedenoiser

ffmpeg 3.2 でリリース予定のビデオフィルタ。Cohen-Daubechies-Feauveau(CDF) 9/7 のウェーブレットデノイザ。フィルタを当てるチャンネルを指定できる。

基本コマンド

ffmpeg -i input -vf vaguedenoiser=threshold=2:method=2:nsteps=6:percent=85:planes=15 output
ffmpeg -i input -vf vaguedenoiser=2:2:6:85:15 output
ffplay -i input -vf vaguedenoiser=2:2:6:85:15

公式ドキュメント:FFmpeg Filters Documentation : vaguedenoiser
続きを読む ウェーブレットデノイザ vaguedenoiser

ffmpeg でフレーム補間する minterpolate

ffmpeg 3.2 でリリース予定のビデオフィルタ。前後フレームから中間フレームを作り出す minterpolate フィルタの使い方。無料でフレーム補完する方法には AviSynth+MvTools が一般的だが、もっと手軽に1コマンドでフレーム補完した動画を作ることができる。

基本コマンド

かなり負荷が高く、シングルスレッドしか働かないので出力解像度を小さくしないと ffplay ではプレビューがまともに動かない。

30fps の動画を 60fps にフレーム補完する
ffmpeg -i input -vf minterpolate=fps=60:mi_mode=mci:mc_mode=obmc:me_mode=bilat:me=epzs:mb_size=16:search_param=32:vsbmc=0:scd=fdiff:scd_threshold=5 output
ffmpeg -i input -vf minterpolate=60:2:0:1:8:16:32:0:1:5 output

公式ドキュメント:FFmpeg Filters Documentation : minterpolate
続きを読む ffmpeg でフレーム補間する minterpolate

2入力の LUT を手軽に入れ替えられる lut2

ffmpeg 3.2 でリリース予定のビデオフィルタ。映像の YUV や RGB を別の映像と入れ換えるときに今までは extractplanes で対象チャンネルを取り出して、mergeplanes で合わせていたのが lut2 だけで入れ換えることができる。ただし複数入力するビデオフィルタでは同じ解像度と SAR でないとエラーが出る。

各映像チャンネルを分離する extractplanes
各映像チャンネルを結合する mergeplanes

また1入力で各チャンネルを入れ換えるには shuffleplanes や、swapuv フィルタがある。

plane を入れ替え、コピーする shuffleplanes

基本コマンド

1入力の Y(または R)をそのままに、1入力の UV(またはGB)を2入力の UV(またはGB)と入れ換える
ffmpeg -i input1 -i input2 -filter_complex lut2=c0=x:c1=y:c2=y output
ffmpeg -i input1 -i input2 -filter_complex lut2=x:y:y output

公式ドキュメント:FFmpeg Filters Documentation : lut2
続きを読む 2入力の LUT を手軽に入れ替えられる lut2

映像の差分を加算する maskedclamp

ffmpeg 3.2 でリリース予定のビデオフィルタ。映像を3入力し、1入力を基本の映像として、1入力と比較して2入力は差分の値がプラスのときに、1入力と比較して3入力は差分の値がマイナスのときに、その差分だけ1入力と入れ換える maskedclamp フィルタの使い方。同じようなことが blend フィルタでもできるが、こちらは3入力できるところが特徴である。

基本コマンド

同じ映像を3入力しても出力映像は変わらない
ffmpeg -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=undershoot=0:overshoot=0:planes=15 output
ffmpeg -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=0:0:15 output
ffplay -i input -vf split=3[0][1][2];[0][1][2]maskedclamp=0:0:15

公式ドキュメント:FFmpeg Filters Documentation : maskedclamp
続きを読む 映像の差分を加算する maskedclamp