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

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

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

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

FFmpeg Devices Documentation : lavfi

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

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

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

平均ブラー avgblur

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

基本コマンド

既定値のオプションを当てる
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

Continue reading “平均ブラー 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

Continue reading “ガウシアンブラー gblur”

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

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

基本コマンド

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

Continue reading “エッジ検出フィルタ sobel, prewitt”

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

ffmpeg 3.2でリリースしたビデオフィルタ。フィールドを合わせてフレームにするweaveフィルタの使い方。縦解像度が2倍になり、フレームレートとフレーム数は2分の1になる。3.4の追加フィルタでdoubleweaveフィルタもある。こちらは縦解像度が2倍になるが、フレームレートとフレーム数は変わらない。

各フィールドをフレームに変換する separatefields

基本コマンド

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

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

2フレームに1フレーム、フィールドがずれたフレームが追加される。解像度はそのままにフレーム数とフレームレートは元映像の倍になる
ffmpeg -i input -vf separatefields,doubleweave output
ffplay -i input -vf separatefields,doubleweave

公式ドキュメント:FFmpeg Filters Documentation : weave, doubleweave

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

複数の映像を1つの映像に合わせるinterleave

2以上の映像をPTSに即して連続した映像で出力するinterleaveフィルタの使い方。フィルタを使ってエンコードするときは出力オプションに-rで動画のフレームレートを指定する。selectフィルタを併用するとシーンチェンジやフレームタイプ別にフィルタを使い分けられる。

関連フィルタ:
フィールドを足したり引いたりする tinterlace
ピクチャーをインターリーブ、デインターリーブするil

Continue reading “複数の映像を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

Continue reading “ウェーブレットデノイザ 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

2つの映像から映像補間した効果を作る例。
Motion Interpolation for Glitch Aesthetics using FFmpeg part 1 | Antonio Roberts

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

Continue reading “ffmpeg でフレーム補間する minterpolate”

2016年8月のニコ生統計

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

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