LUTを手軽に入れ替えられるlut2、tlut2、swapuv

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

ffmpeg 3.4でリリースした同じオプションでtlut2フィルタも追加された。こちらは1入力1出力になり、前後フレームのLUTを入れ換える。いわゆるtblendフィルタのLUT版になる。また1入力で各チャンネルを入れ換えるにはshuffleplanesや、swapuvフィルタがある。

lut2、tlut2

基本コマンド

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 -i input1 -i input2 -filter_complex lut2=x:y:y,realtime -f sdl -

公式ドキュメント:FFmpeg Filters Documentation : lut2, tlut2

Continue reading “LUTを手軽に入れ替えられるlut2、tlut2、swapuv”

映像の差分を加算する maskedclamp

ffmpeg 3.2 でリリースしたビデオフィルタ。映像を3入力し、1入力目を基本の映像として、1入力目と比較して2入力目は差分の値がプラスのときに、1入力と比較して3入力目は差分の値がマイナスのときに、その差分だけ1入力と入れ換えるmaskedclampフィルタの使い方。同じようなことがblendフィルタでもできるが、こちらは3入力できるところが特徴である。4.2.2 以降のバージョンで変更があり挙動がよくわからなくなっている。

基本コマンド

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

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

Continue reading “映像の差分を加算する maskedclamp”

映像フィルタを当てる前後のデータを見える化する

ffmpeg には多くの映像フィルタと音声フィルタがあるが、その効果を調べるのに主観的な判断だけではなく、客観的な判断ができるように数値を映像に表示したり、ヒストグラムを表示したりすることで映像の差違を見える化する。nullフィルタを別のフィルタに変更することでフィルタを当てた同士で比較できる。

Continue reading “映像フィルタを当てる前後のデータを見える化する”

一定間隔で映像に線を引く drawgrid

映像に縦線や横線、または格子状に直線を引くdrawgridフィルタの使い方。

基本コマンド

10×20の位置に交差し、100×50毎に太さ2ピクセルで赤の半分透過した格子状の線を引く

ffmpeg -i input -vf drawgrid=x=10:y=20:width=100:height=50:thickness=2:color=red@0.5 output
ffmpeg -i input -vf drawgrid=10:20:100:50:red@.5:2 output
ffplay -i input -vf drawgrid=10:20:100:50:red@.5:2

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

Continue reading “一定間隔で映像に線を引く drawgrid”

2016年7月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2016年7月のニコ生統計”

写真など傾いた対象を修正する perspective

斜めから撮った写真や動画をまっすぐから見たように修正するperspectiveフィルタの使い方。修正部分だけを取り出すにはcropフィルタを併用する。cropフィルタを併用しないと出力解像度が元の解像度のままになりアスペクト比がおかしくなる。

Continue reading “写真など傾いた対象を修正する perspective”

エッジ部分に調整のあるポストプロセッシングフィルタ pp7

pp7(Postprocessing filter with 7 point DCT)フィルタはfsppの次に負荷の重たいポストプロセッシングフィルタである。

デノイズとインターレース解除ができる pp
速くて単純なポストプロセッシングフィルタ fspp

基本コマンド

ffmpeg -i input -vf pp7=qp=1:mode=2 output
ffmpeg -i input -vf pp7=1:2 output
ffplay -i input -vf pp7=1:2

公式ドキュメント:FFmpeg Filters Documentation : pp7
公式wiki:Postprocessing – FFmpeg

Continue reading “エッジ部分に調整のあるポストプロセッシングフィルタ pp7”

速くて単純なポストプロセッシングフィルタ fspp

fspp(fast and simple postprocessing)とは前回のppに続くポストプロセッシングフィルタである。ppよりもオプションが簡素なので使いやすい。

デノイズとインターレース解除ができる pp

基本コマンド

ffmpeg -i input -vf fspp=4:0:0 output
ffplay -i input -vf fspp=4:0:0

公式ドキュメント:FFmpeg Filters Documentation : fspp
公式wiki:Postprocessing – FFmpeg

Continue reading “速くて単純なポストプロセッシングフィルタ fspp”

デノイズとインターレース解除ができる pp

pp(postprocessing)フィルタとは、デコード段階でフィルタを当てるフィルタを意味するが、フィルタチェーンでのppの位置によってフィルタが当たる順番も変わる。用途に合わせてたくさん種類があるので使いこなすのは難しい。ビルドオプションに--enable-gplが付いてないと使えない。

同様のフィルタにfspp,pp7,spp,usppがあるが、順番に負荷が大きくなりfspp以降は負荷を考えると実用性は低い。

速くて単純なポストプロセッシングフィルタ fspp

基本コマンド

ffmpeg -i input -vf pp=de output
ffplay -i input -vf pp=de

公式ドキュメント:FFmpeg Filters Documentation : pp
公式wiki:Postprocessing – FFmpeg

Continue reading “デノイズとインターレース解除ができる pp”

RGB レベルで明暗調整できる colorlevels

手軽に RGB を明るくしたり、暗くしたり、コントラストを上げ下げできるcolorlevelsフィルタの使い方。RGB を操作するフィルタにcurvesselectivecolorcolorbalanceなどがある。

基本コマンド

既定値では変化はない
ffmpeg -i img -vf colorlevels output
ffplay -i img -vf colorlevels

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

Continue reading “RGB レベルで明暗調整できる colorlevels”