[FFmpeg-user] clipping samples to broadcast range in an mpeg2video output

Dave Rice dave at dericed.com
Fri Feb 5 21:56:54 CET 2016

Hi all,
I am having trouble creating an mpeg2video output that conforms to 16-235 broadcast range. I'd like to find a way to have an input which is yuv420p but has luma values out of broadcast range but clip to broadcast range while encoding to mpeg2.

To demonstrate the issue, I generate a yuv420p file with samples in the out of broadcast range via:

ffmpeg -f lavfi -i "nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128" -c:v ffv1 -t 10 sample.mkv 

I can then clip the samples using clipval in the lut filter and see the clipped values in a waveform with:

ffmpeg -i sample.mkv -vf lut=y=clipval:u=clipval:v=clipval -c:v ffv1 -f nut - | ffplay - -vf waveform
The waveform shows the values clipped at 16 and 235.

However I need the output to use mpeg2video. When I change lossless ffv1 to mpeg2video with:

ffmpeg -i sample.mkv -vf lut=y=clipval:u=clipval:v=clipval -c:v mpeg2video -f nut - | ffplay - -vf waveform

The output shows many sample values above 235. The lossy mpeg2video encoding seems to place values above 235 while the lossless ffv1 doesn't. Is there a way to encode in mpeg2video without having values over 235 in the output?

Best Regards,
Dave Rice

More information about the ffmpeg-user mailing list