タグ別アーカイブ: effects

ドラクエの戦闘シーンチェンジエフェクトを作る

ニコニコ動画に投稿された「DQエンカウント風AviUtlシーンチェンジ用素材 sm30578410」を元に ffmpeg でも同じことを実装する。配布されたファイルは 8bit PNG なのでそれを使い、グラデーションマスクを作成し2入力を合わせる方法をとる。サンプルコマンドの出力コーデックは適宜変える。input1.mp4 と input2.mp4 は 640×360 30000/1001 fps の動画である。それに伴って。color ソースもそれに統一する。シーンチェンジは input1.mp4 から input2.mp4 の順番に切り替わるのがドラクエの戦闘シーンチェンジエフェクトになる。
続きを読む ドラクエの戦闘シーンチェンジエフェクトを作る

白と黒を使ったフェード効果

白や黒にフェードインする効果と、白や黒から入力した映像にフェードアウトする効果の解説。入力した映像が YUV、または RGB で処理が異なる。効果は2秒から4秒に掛けての2秒間で行う。適宜効果の時間は設定を変える。

関連記事
数式で線や円、模様が描ける geq
特定の区間だけフィルタを当てるタイムライン編集について
続きを読む 白と黒を使ったフェード効果

数式で線や円、模様が描ける geq

ffmpeg のフィルタの中でおそらく最も使い方が難解な geq(generic equation) フィルタの使い方。YUV と RGB、A のそれぞれを設定により色を変えたり、回転・反転させたり、グラデーションや線、円や矩形も描ける。さらにマスクも作れるのでトランジションへの応用もできるが処理速度はかなり遅い。その書き方はすべて縦横の座標とその値を 評価式 で計算する。
続きを読む 数式で線や円、模様が描ける geq

モノクロで点滅する効果を作る

YUV の映像なら彩度を 0 にするか、UV を 128 にする方法で、RGB の映像なら RGB 各値をそれぞれ一定倍率を掛け合わせる方法をとり、点滅するフレーム間隔を指定するのにタイムライン編集を行う。

特定の区間だけフィルタを当てるタイムライン編集について
続きを読む モノクロで点滅する効果を作る

時間でフィルタに強弱をつける

アルファチャンネルの濃さを調整することで時間で強弱をつけるフィルタができあがる。

基本コマンド

3秒から4秒に掛けて gblur フィルタを当てる
ffplay -i input -vf split[0],gblur=4:enable='between(t,3,4)',format=yuva420p,fade=t=in:st=3:d=0.5:alpha=1,fade=t=out:st=3.5:d=0.5:alpha=1,[0]overlay=enable='between(t,3,4)'
続きを読む 時間でフィルタに強弱をつける

2入力する映像のフィルタを詳しく設定する

2つ以上の映像を入力してフィルタを当てるときにそれらの読み込み開始時間は等しくなる。これを -ss オプションや trim フィルタを使って読み込み開始時間をずらす方法。対象となるフィルタは overlay, blend などの2映像のチャンネルを合わせるフィルタである。
続きを読む 2入力する映像のフィルタを詳しく設定する

ユーフォ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
続きを読む 前後フレームの差分で動いた部分だけマスクする モーションマスク

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

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

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

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

FFmpeg Devices Documentation : lavfi
続きを読む 映像の場所を入れ換えて暗号化する