ffmpeg のフィルタで容量を減らすと言えばたいていの場合デノイズしてのっぺりさせてきたが、今回はデノイズではなくてYチャンネル(輝度)のステップを間引いて容量を減らしてみた。この方法のデメリットはのっぺりしたりぼやけたりはしないがステップが単純化されるのでグラデーションがきれいではなくなる(バンディングがのる)のと、処理が遅いのでリアルタイムエンコード(配信)向きである。
任意でステップを調整できるのでバンディングが目立つところを間引かずに他の所を間引くことで目立たないところで容量を減らすことができる。ステップの調整は映像の内容によって変えた方がきれいに見える。
追記 2015年11月6日 0時21分
可逆圧縮(utvideo)の時は確かに容量は減るのだが、不可逆圧縮(libx264)のときはかえって容量は増えて SSIM も悪くなる傾向にあるのでもう少し調べてみる。
追記 2015年11月11日
paletteuse
ではなくてlutyuv
でも間引くことができるがわずかな効果しかない。Yチャンネルは修正しない方が無難かもしれない。
追記 2017年3月31日
見た目の変化がわかりにくい青色、YUV の U をデノイズした方がよい結果になるかも。使うフィルタはremovegrain
を使う。
奇数の値を+1繰り上げる。繰り下げる場合は-1。偶数はそのまま。
lutyuv=y="if(mod(val,2),val,val+1)":u="if(mod(val,2),val,val+1)":v="if(mod(val,2),val,val+1)"
その他にremovegrain
でそれぞれのチャンネルに個別にデノイズ処理する方法もある。
Windows の ffmpeg で生放送する方法 :: グレイン除去
追記ここまで
Continue reading “輝度の段差を減らして容量を減らす試み”