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

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

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

FFmpeg Devices Documentation : lavfi

smptehdbars ソースの元映像

6×6 の暗号例その1
ffplay -i input -vf swaprect=w/6:h/6:2*w/3:h/3,swaprect=w/6:h/6:5*w/6:h/6,swaprect=w/6:h/6:5*w/6:5*h/6,swaprect=w/6:h/6:2*w/3:h/6,swaprect=w/6:h/6:w/6:h/6,swaprect=w/6:h/6:w/3:5*h/6,swaprect=w/6:h/6:w/2:h/2,swaprect=w/6:h/6:w/6:0,swaprect=w/6:h/6:w/3:h/6,swaprect=w/6:h/6:0:0,swaprect=w/6:h/6:2*w/3:2*h/3,swaprect=w/6:h/6:w/2:5*h/6,swaprect=w/6:h/6:5*w/6:h/3,swaprect=w/6:h/6:w/2:h/6,swaprect=w/6:h/6:0:5*h/6,swaprect=w/6:h/6:w/6:2*h/3,swaprect=w/6:h/6:2*w/3:h/2,swaprect=w/6:h/6:w/6:5*h/6,swaprect=w/6:h/6:5*w/6:2*h/3,swaprect=w/6:h/6:2*w/3:0,swaprect=w/6:h/6:5*w/6:0,swaprect=w/6:h/6:5*w/6:h/2,swaprect=w/6:h/6:0:h/6,swaprect=w/6:h/6:w/2:0,swaprect=w/6:h/6:w/3:h/3,swaprect=w/6:h/6:w/6:h/3,swaprect=w/6:h/6:w/6:h/2,swaprect=w/6:h/6:w/2:h/3,swaprect=w/6:h/6:w/3:0,swaprect=w/6:h/6:0:h/2,swaprect=w/6:h/6:w/3:h/2,swaprect=w/6:h/6:w/3:2*h/3,swaprect=w/6:h/6:w/2:2*h/3,swaprect=w/6:h/6:0:2*h/3,swaprect=w/6:h/6:2*w/3:5*h/6,swaprect=w/6:h/6:0:h/3

smptehdbars ソースを難読化した映像

6×6 の復号例その1
ffplay -i input -vf swaprect=w/6:h/6:0:h/3,swaprect=w/6:h/6:2*w/3:5*h/6,swaprect=w/6:h/6:0:2*h/3,swaprect=w/6:h/6:w/2:2*h/3,swaprect=w/6:h/6:w/3:2*h/3,swaprect=w/6:h/6:w/3:h/2,swaprect=w/6:h/6:0:h/2,swaprect=w/6:h/6:w/3:0,swaprect=w/6:h/6:w/2:h/3,swaprect=w/6:h/6:w/6:h/2,swaprect=w/6:h/6:w/6:h/3,swaprect=w/6:h/6:w/3:h/3,swaprect=w/6:h/6:w/2:0,swaprect=w/6:h/6:0:h/6,swaprect=w/6:h/6:5*w/6:h/2,swaprect=w/6:h/6:5*w/6:0,swaprect=w/6:h/6:2*w/3:0,swaprect=w/6:h/6:5*w/6:2*h/3,swaprect=w/6:h/6:w/6:5*h/6,swaprect=w/6:h/6:2*w/3:h/2,swaprect=w/6:h/6:w/6:2*h/3,swaprect=w/6:h/6:0:5*h/6,swaprect=w/6:h/6:w/2:h/6,swaprect=w/6:h/6:5*w/6:h/3,swaprect=w/6:h/6:w/2:5*h/6,swaprect=w/6:h/6:2*w/3:2*h/3,swaprect=w/6:h/6:0:0,swaprect=w/6:h/6:w/3:h/6,swaprect=w/6:h/6:w/6:0,swaprect=w/6:h/6:w/2:h/2,swaprect=w/6:h/6:w/3:5*h/6,swaprect=w/6:h/6:w/6:h/6,swaprect=w/6:h/6:2*w/3:h/6,swaprect=w/6:h/6:5*w/6:5*h/6,swaprect=w/6:h/6:5*w/6:h/6,swaprect=w/6:h/6:2*w/3:h/3

6X6 の暗号例その2、10X6 と 16X9 の暗号例。
ffmpeg_swaprect_filter encrypt

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)