Hi,

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

http://tucniak.sk/ffmpeg/GrabedPictures.zip

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 TestX264.avi

made this result
http://tucniak.sk/ffmpeg/TestX264.avi

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.

http://tucniak.sk/ffmpeg/OwnGrabX264_YUV444.avi

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 OutHuff.avi ffmpeg -r 5 -i ./GrabedPictures/Pic%d.png -r 5 -vcodec ffv1 -sameq TestFfv1.avi

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 efficient. -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" X264.

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
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to