YUV(A) や RGB(A)、GRAY の数値を16進数で映像にオーバーレイして確認できるdatascope
フィルタの使い方。数値ではなく映像で表示するフィルタにhistogram
フィルタがあるがdatascope
フィルタの方が直感的に任意の場所の数値が読み取れる。ただし表示できる範囲は全画面ではなく1px毎に表示されるので全体の変化を大まかに調べるのには向かない。
基本コマンド
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
フィルタを使って解像度を揃える。

ffmpeg -f lavfi -i testsrc2=d=1,crop=16:10:4:6 -vframes 1 testsrc2-crop.png
datascope
フィルタ後の解像度は 340(16*20-2+22)x380(10*36-2+22) になり、そこから左上の22x22px、右に3px、下に7pxをカットする。

ffmpeg -i testsrc2-crop.png -filter_complex split[a],datascope=s=340x380:mode=color:axis=1,crop=340-22-3:380-22-7:22:22[b];[b][a]scale2ref='if(gt(iw,ih),(iw*20-2-3)*dar,iw*20-2-3):if(gt(ih,iw),(ih*36-2-7)*dar,ih*36-2-7)'[b0][a0] -map [b0] datascope-scale0.png -map [a0] -f null -

ffmpeg -i testsrc2-crop.png -filter_complex split[a],datascope=s=340x380:mode=color:axis=1,crop=340-22-3:380-22-7:22:22[b];[b][a]scale2ref='if(gt(iw,ih),iw*20-5,(iw*20-5)/dar):if(gt(ih,iw),ih*36-9,(ih*36-9)/dar)'[b0][a0] -map [b0] datascope-scale1.png -map [a0] -f null -
公式ドキュメント:FFmpeg Filters Documentation : datascope
オプション
- size, s[image_size]
出力解像度。表示する座標に横は20倍以上、縦は1チャンネルあたり12倍以上必要
既定値。hd720(1280×720) - x[int]
左上を 0 とした表示する横軸の座標指定
既定値:0 - y[int]
左上を 0 とした表示する縦軸の座標指定 - mode[int] 表示モードの指定
- 0, mono:黒背景に白色数字。既定値
- 1, color:黒背景に元映像の色数字
- 2, color2:元映像の背景に数字を読みやすい色に変える
既定値:0(無効)
上と左に座標の値を表示する。有効化すると表示範囲が狭まる
背景の透過指定
既定値:0.75
範囲:0 から 1 まで
- 0, hex:16進数。既定値
- 1, dec:10進数
表示するチャンネル指定
既定値:15
詳しくは ffmpeg について | チャンネルの順番と注意点を参照