Convert image sequence to lossless movie
Try using a lossless codec, e.g. HuffYUV or FFV1:
ffmpeg -i frame%04d.png -c:v huffyuv test.avi
ffmpeg -i frame%04d.png -c:v ffv1 -qscale:v 0 test.avi
Both codecs look portable. HuffYUV appears to be the more popular, but for some reason, huffyuv encoding seems broken on my system, and I get weird colors and black horizontal banding. It could have something to do with the input being RGB (from PNG) and not YUV (input from a raw YUV420 video file works OK). So here are some alternatives (not completely lossless, but visually quite good):
ffmpeg -i frame%04d.png -qscale:v 0 test.avi
ffmpeg -i frame%04d.png -c:v mjpeg -qscale:v 0 test.avi
Related videos on Youtube
astrofrog
Updated on January 19, 2020Comments
-
astrofrog over 4 years
I have a sequence of images in TIF format, and I would like to create a movie at a fixed FPS (say 10 images per second) and that is lossless. Is there an easy way to do that? I've been trying with
convert
from Imagemagick, andffmpeg
, but I just can't figure out what settings to use to avoid any compression.-
JoshRoss over 13 yearsIf you have a Mac, you can use apple script and quicktime. Do you have access to a Mac?
-
Hugues over 7 yearsSee also superuser.com/questions/347433/…
-
Ciro Santilli OurBigBook.com over 7 years
-
Peter over 5 years
ffmpeg -r 15 -i img%04d.jpg -vcodec libx264 -b 800k -filter minterpolate='fps=120' out.mp4")
works quite well for me -
Peter over 5 yearsAnother hint: also check different
fps=
settings. Lower/higher fps may be better contingent on the problem at hand.
-
-
Todd Partridge 'Gen2ly' almost 12 yearsHuffYUV does have support for RGB, so I'm not sure it thats the issue.
-
P.R. about 11 yearsI think almost by definition mjpeg will NOT be lossless. HuffYUV is, but it might introduce rounding errors due to color conversion. I cannot state anything about FFV1. However, I would like to draw attention to the lossless H264 option: ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide#LosslessH.264
-
Royi over 7 yearsHow can I make each image to be exactly 1 frame and make the output file have FPS of 1 (Without replicating the images, just play slowly)? Thank You.
-
Will Brickner over 6 years@Royi what I do is
ffmpeg -r <DESIRED_FPS> -f image2 -s <FRAME_WIDTH>x<FRAME_HEIGHT> -i ./frames/frame_%d.png -vcodec libx264 -pix_fmt yuv420p ./output.mp4
The part you're interested in is the-r <FPS>
flag.