Is there a way to determine what the Luminance levels are set to a particular video file? I would like to know if it's set to 16-235 or 0-255. I tried MediaInfo but didn't see it listed.
+ Reply to Thread
Results 1 to 17 of 17
Even if such information was imbedded explicitly in a video file, that's no assurance that the creator adhered to the standard range. Most people don't. They aren't even aware that such standards exist.
Last edited by sanlyn; 19th Mar 2014 at 11:46.
I think you're under the impression that there's some sort of autocolor or autogain limiters involved in video encoding. Luma and chroma levels are elements that you have to check and adjust yourself in your own processing. I have seen some software that specifies a colorspace (such as BT609, etc.), but that still doesn't mean that the actual values used in the video will comply with those ranges.
The published standard is RGB 16-230 (luma) and RGB 16-240 (chroma) for what is called "broadcast standard" video used in commercial broadcasting and DVD/BD production, or RGB 0-255 for PC-only display. Regardless of which final display criteria you're after, you have to insure that your output doesn't have crushed darks and clipped brights that lie outside those specs. Neither the encoder nor the display device decoders will correct for haywire luma or chroma values.
Last edited by sanlyn; 19th Mar 2014 at 11:47.
would be interesting to know if there's an automated option to do the identification (maybe using ffmpeg or something similar,..)
I remembered something, how about calling: (with the path adjusted)
ffplay -i "PATH TO SOURCE" -vf "split[a][b];[a]format=gray,histogram=mode=waveform:waveform_mode=column,vflip,split[c][d];[b]pad=iw:ih+256[padded];[c]geq=g=1:b=1[red];[d]geq=r=1:b=1,crop=in_w:220:0:16[mid];[red][mid]overlay=0:16[wave];[padded][wave]overlay=0:H-h"
this should show a colored histrogram in waveform.
green = colors are inside TV scale (15-235)
red = colors are inside PC scale (0-255)
this isn't automatic but it's may be more intuitive,...
(does anyone know a way to output the histogram to the command line?)
Last edited by Selur; 3rd Dec 2013 at 09:41.
The waveform monitors only measure at a single point in time . So if you measure at time "x" there might be 16-235 Y' data, but at time "x+1" there might be 0-255 Y' data
ffmpeg has -vf histogram , so you can use ffplay to see the chart in realtime . Unfortunately there are no markings . There is also a vectorscope mode, and a levels mode (like histogram("Levels") in avisynth)
ffplay -i "input.ext" -vf "histogram='mode=waveform':'waveform_mode=column'"
Most NLE's don't use a 0-255 scale, they measure by a 0-100 IRE scale
EDIT: I didn't see your edit selur, that's a nice way to do it below the image
like I wrote in my post before (edited it before you had posted your post ), question is:
Is there a way to output the histogram to the stdut or to a file?
No, I want the histogram values not images.
*gig* I thought about this before: https://forum.videohelp.com/threads/355566-Histogram-TV-PC-range-min-max
If I got the values in a file or a command line I could write a small tool which:
a. calls ffmpeg/ffplay/... to analyse the source and output the data
b. take the data and output if the source is probably TV or PC scale
Personally, I wouldn't trust an automated solution that looks for high and low luma values. Too many 16-235 videos have overshoots that would make that unreliable. Even with ColorYUV's "loose" values.
Sure you would use some heuristic based on the number of luma values which are in PC and not TV range, but first thing would be to have some data to analyse.
@ffmpeg -v 32 -stats -i "%1" -vf:? "signalstats,metadata=print:file='v.%~n1.txt'" -af:? "astats=metadata=1:reset=1,ametadata=print:file='a.%~n1.txt'" -f null - > "av.%~n1.txt" 2>&1
Last edited by pandy; 8th Nov 2018 at 12:01.