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

色相を動的に変更できる hue

YUV の輝度と彩度を調整できる hue フィルタ。値の指定にフレーム数やタイムスタンプが使えるので時間によって動的に変えられる。

基本コマンド

既定値では変化ない
ffmpeg -i input -vf hue=h=0:s=1:b=0 output
ffplay -i input -vf hue=0:1

色相を動的に変える例
ffplay -i input -vf hue=n
評価式(計算書式)の print を使えば値を調べられる
ffplay -i input -vf hue=print(n)
ffmpeg で使える計算書式

公式ドキュメント:FFmpeg Filters Documentation : hue
続きを読む 色相を動的に変更できる hue

静止画放送かどうかを ffmpeg で調べる

ffmpeg には blend フィルタの difference128 オプションを使うことで特定シーン同士を比較して映像の差分を調べることができる。今回はニコ生の雑談放送でよく見られる静止画1枚を映しながら放送しているタイプの動画を調べるコマンドである。
続きを読む 静止画放送かどうかを ffmpeg で調べる

ユーフォ2期OP冒頭部分のモノクロ部分だけ黒にする

ユーフォ2期,1話から5話までのOP冒頭部分のモノクロ部分だけ黒にする。モノクロ部分の UV が 128 になるのを利用してこの部分以外をマスクして真っ黒にする。

コマンド例
ffmpeg -i video.ts -vf bwdif=0:-1:1,decimate,removelogo=logo.bmp,split=3[0][1][2];[2]format=yuv444p,avgblur=3:2,shuffleplanes=1:1:1,lutyuv=between(val\,120\,135)\*255:val:val[2a];[1]lutyuv=0:val:val[1a];[0]format=yuvj420p[0a];[0a][1a][2a]maskedmerge=0x7,format=yuv420p -acodec copy output.mp4
続きを読む ユーフォ2期OP冒頭部分のモノクロ部分だけ黒にする

前後フレームの差分で動いた部分だけマスクする モーションマスク

前後フレームの YUV 差分をマスクしてフィルタを当てなくするモーションマスクの使い方。マスクするチャンネルは Y だけと、YUV のすべてを指定でき、マスクを反転することもできる。使うフィルタは tblend で前後フレームを1入力で取り込み、maskedmerge で1,2入力の割合を決めている。

前後フレームの差分をブレンドする tblend
マスクして2入力を合わせる maskedmerge
続きを読む 前後フレームの差分で動いた部分だけマスクする モーションマスク

非局所平均のデノイザ nlmeans

ffmpeg 3.2 でリリース予定のビデオフィルタ。ffmpeg のフィルタの中でかなり処理が重たい部類に入るエッジ保護のデノイザ nlmeans フィルタの使い方。なぜこれほどまでに重たいかというとデノイズする部分を映像内容によって異なる処理をするために重たくなるから。詳しい処理内容は「non-local means filter」で検索する。

処理内容の紹介記事
Non-local Means Filterによるデノイジング | OpenCV.jp
Non-local Means Filterの実装 – Qiita

該当ソースコード:FFmpeg/vf_nlmeans.c at master · FFmpeg/FFmpeg
公式ドキュメント:FFmpeg Filters Documentation : nlmeans
続きを読む 非局所平均のデノイザ nlmeans

映像の場所を入れ換えて暗号化する

ネット上で漫画を読めるサービスで画像のリンクを開いてみると、本来の映像の位置からバラバラに配置されている画像を見られる。これを ffmpeg の swaprect フィルタを使って映像をバラバラに配置して同じ効果が得られる。

映像の2カ所を入れ替える swaprect

映像をたくさん分割すればするほど組み合わせが複雑になるが、フィルタチェーンの文字数制限があるので無制限に分割できるわけではない。バラバラに分割して暗号化された映像を元に戻すには同じフィルタチェーンを逆順に設定すれば元の映像に戻すことができる。swaprect フィルタの他にも swapuv で UV を入れ換えたり、hflip で左右反転することでより難読化することができる。swaprect フィルタを多用してもそれほど負荷は上がらないので気にする必要は無いが、映像が難読化され圧縮しにくい映像になり容量が増える。
続きを読む 映像の場所を入れ換えて暗号化する

音声のダイナミックレンジを広げる 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