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.
Convert image sequence to lossless movie [closed]
Asked Answered
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
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.264 –
Bibbye
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.
ffmpeg -r 15 -i img%04d.jpg -vcodec libx264 -b 800k -filter minterpolate='fps=120' out.mp4")
works quite well for me – Coblenzfps=
settings. Lower/higher fps may be better contingent on the problem at hand. – Coblenz