Convert image sequence to lossless movie [closed]
Asked Answered
S

1

46

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, and ffmpeg, but I just can't figure out what settings to use to avoid any compression.

Spree answered 29/1, 2011 at 20:41 Comment(5)
If you have a Mac, you can use apple script and quicktime. Do you have access to a Mac?Use
See also superuser.com/questions/347433/…Inelastic
related: #24961627Gravelblind
ffmpeg -r 15 -i img%04d.jpg -vcodec libx264 -b 800k -filter minterpolate='fps=120' out.mp4") works quite well for meCoblenz
Another hint: also check different fps= settings. Lower/higher fps may be better contingent on the problem at hand.Coblenz
F
55

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
Fenestrated answered 30/1, 2011 at 3:51 Comment(4)
HuffYUV does have support for RGB, so I'm not sure it thats the issue.Prakrit
I 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.264Bibbye
How 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.Cozmo
@Cozmo 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.Personalty

© 2022 - 2024 — McMap. All rights reserved.