[Libav-user] Lossless encoding - red color sharpness defect

koli at koli.sk koli at koli.sk
Mon May 28 13:39:00 CEST 2012


I was trying to use ffmpeg for screen capture and come to this problem. 
I was using x264 for encoding with many different options, but the 
result was unsatisfactory. Problem is with red colored labels, which are 
really important in screen videos that should be captured. Here is 
series of sample PNG pictures


It is just simple desktop with running Thunderbird with one email 
selected as "Important" so it is red colored text in dark background.
Simple encoding via command line

ffmpeg -r 5 -i ./GrabedPictures/Pic%d.png -r 5 -vcodec libx264 

made this result

Everything is pretty sharp, except the red text in Thunderbird. Then I 
used "lossless" option

ffmpeg -r 5 -i ./GrabedPictures/Pic%d.png -vcodec libx264 -x264opts 
qp=0 TestLosslessX264.avi

Everything is almost the same, except the file size (almost twice), but 
the red text still remains fuzzy

We have developed a simple grabber using ffmpeg library, where we used 
hardcoded YUV444 colorspace and with that we made this video with 
similar screen.


and the problem still remains.

I don't know how much "LOSSLESS" is the qp=0 option but it seems that 
it is not enough to produce the same output as input. Can anybody give 
some hint for options that could be used to make it REAL LOSSLESS.

For testing purpose I tried also "ffv1" and "huff" codec. I am not 
posting the result videos because of the size, but you can do it 
yourself by downloading GrabedPictures.zip and comands

ffmpeg -r 5 -i ./GrabedPictures/Pic%d.png -r 5 -vcodec huffyuv 
ffmpeg -r 5 -i ./GrabedPictures/Pic%d.png -r 5 -vcodec ffv1 -sameq 

But these are not a good solution.
-Huff produced 270MB video from 50MB of PNG, and maybe I am doing 
somethig wrong but direct playing PNGs as frames would be more 
-Ffv1 produced 22MB video which is some kind better but it is still too 
much in comparison with 0,3MB for standard X264 and 0,6MB for "lossless" 

What is more interesting when I was trying to play huff or ffv1 video 
with mplayer or ffplay the red text was still fuzzy. So I thought that 
even these codecs are not real lossless. Then by accident I played these 
videos with vlc player and with this the red text was sharp. So the 
problem was not encoding but decoding. It seems that ffmpeg has not 
correct decoding of "lossless" video codecs.

Then I tried to play my "lossless" videos (TestLosslessX264.avi, 
OwnGrabX264_YUV444.avi) with vlc hoping that the problem is just in 
decoding. But again I was not successful. The first one shows only first 
frame in vlc, and the second one only black screen.

Any hints or tips how to make "lossless" video with sharp red labels 
are welcome
Best regards
Juraj Kolesar

More information about the Libav-user mailing list