YUV(A) や RGB(A)、GRAY の数値を16進数で映像にオーバーレイして確認できるdatascope
フィルタの使い方。数値ではなく映像で表示するフィルタにhistogram
フィルタがあるがdatascope
フィルタの方が直感的に任意の場所の数値が読み取れる。ただし表示できる範囲は全画面ではなく1px毎に表示されるので全体の変化を大まかに調べるのには向かない。
ffmpeg でヒストグラムを表示する
基本コマンド
ffplay input -vf datascope=s=1280x720:x=0:y=0:mode=0:axis=0
チャンネル数の数だけ 1px に表示される数が変わる。上から順番にチャンネルが割り振られる。チャンネルが増えるだけ表示できる解像度が狭くなる。
ffmpeg -f lavfi -i testsrc2=d=1,format=rgb24 -vf datascope=s=340x380:mode=color:x=4:y=6:axis=1 -vframes 1 datascope.png
入力映像が3チャンネル、8ビットの場合以下の解像度になる。
- 横のpx数*20-2+22
- 縦のpx数*36-2+22
上と左に表示される座標値をcrop
フィルタでカットする場合は左上 22x22p をカットする。入力解像度が奇数になる場合はformat=rgb24, format=yuv444p
で入力フォーマットを変更する。右と下をぎりぎりにカットする場合は、右に3px、下に7pxをカットする。
ffmpeg -f lavfi -i testsrc2=d=1,format=rgb24 -vf datascope=s=340x380:mode=color:x=4:y=6:axis=1,crop=340-22-3:380-22-7:22:22 -vframes 1 datascope-crop.png
縦横の比率を合わせる場合
scale2ref
フィルタを使って解像度を揃える。