Frame-accurate Speed Control in VSE

How do I fix this?

I have 1801 images. These display a timer, increasing from 00:00 to 30:00. Count it, it’s 1801 images.

Of course, I want to show each image for exactly 1 second. My project is set to 30 fps. That would increase the length to 1801 * 30 = 54030 frames.

So, you would think, just set the length of the image sequence to 54030 and add a Speed Control.

Yeah, but that doesn’t work. Speed Control is not accurate, it doesn’t show the last frame until frame 54011, that’s 11 frames too late!

So ‘Stretch to input strip length’ doesn’t work as it should (which is, divide the 54030 frames evenly in 1801 sections, which would give you 54030/1801 = 30 frames per input frame).

So I try ‘Use as speed’, with Speed Factor set to 1 and Multiply Speed set to 1/30. Again, that doesn’t work, it is too slow, not displaying the last frame until frame 54011, again 11 frames too late.

I suspect there’s an internal rounding error causing this, but that’s not helping me. How do I fix this? How can I make Blender understand that if I want something slowed down exactly 30 times, it should slow it down exactly 30 times, so the last frame starts exactly on frame 54000 and not on frame 54011?

Is zero the first frame number? Perhaps your multiplier is off by 1 frame.

My source image sequence starts at 0001 and ends at 1801. So that’s exactly 1801 frames, not 1802.

I line that up to the displayed timecode in Blender, so it starts at frame 0 at time 00:00:00 and I let it run for 54030 frames, so it ends at frame 54029, timecode 30:00:29, so that should exactly fit.

Anyway, I found that unchecking ‘Use as speed’ and then keyframing the ‘Frame number’ value seems to work, of course with linear interpolation. It didn’t look like that works at first, because it doesn’t seem to update. I have to Grab the strip, wiggle it around and then let it go for it to take effect, it seems.

Click the refresh sequencer button. This forces blender to reevaluate all animation values.