Drive a Video/Image Sequence's current frame from an expression (for slow mo, ping pong looping...)

Hello there,

I’m new here and quite the Blender newbie, so my apologies in advance if I’m asking silly questions.
I’m starting a project where I’ll be using a lot of animated textures, mostly short video clips. I would like to have control over their playback speed, and maybe even play them backwards.

What I tried:

  • using a “Movie” image texture, uncheck its “Auto Refresh” box, and animate its “Offset” value through an expression, e.g. something like floor(#frame/2) to halve its playback speed. However upon render the movie still plays back at its original speed, only when it loops it starts over from further in the clip
  • using an “Image Sequence” instead of a Movie, since it’s apparently able to load video files, however this seems to have exactly the same parameters as a Movie and it only shows a gray image anyway (maybe a format/codec issue? ffprobe says my video codec is rawvideo, bgr24 - it’s been cut from VirtualDub)

It seems there’s fundamental things I’m not understanding with animated image textures. What exactly is the difference between “Image Sequence” and “Movie” (apart from being able to load multiple numbered images as an image sequence)? Is there any settings that allows me to set the currently displaying frame from an expression?

Thanks a lot in advance :slightly_smiling_face:

Well, if anyone encounters the same issues, I found a way to do what I wanted. I just had to:

  • set the Frames setting to 1
  • that’s it

It seems otherwise (with Frames > 1) all video frames are going to be played in sequence whether Auto Refresh is checked or not. With Frames = 1, I guess the same single frame is played repeatedly, and animating the Offset setting allows for that frame to be chosen through an expression.