I have a directory full of images following the pattern <timestamp>.png
, where <timestamp>
represents milliseconds elapsed since the first image. input.txt
contains a list of the interesting images:
file '0.png'
file '97.png'
file '178.png'
file '242.png'
file '296.png'
file '363.png'
...
I am using ffmpeg to concatenate these images into a video:
ffmpeg -r 15 -f concat -i input.txt output.webm
How do I tell ffmpeg to place each frame at its actual position in time instead of using a constant framerate?
Appears your images are non standard frame rate...One option would be to duplicate the appropriate image "once per millisecond" [i.e. for
duplicate file 0.png 96 times, so it becomes 0.png 1.png 2.png etc. (or use symlinks, if on linux).
Then you can combine them using the normal image inputter [with input rate of 1ms/frame]. https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images
Following LordNeckbeard's suggestion to supply the
duration
directive to ffmpeg's concat demuxer using the time duration syntax,input.txt
looks like this:Now ffmpeg handles the variable framerate.
Here is the C# snippet that constructs
input.txt
: