Copy link to clipboard
Copied
I assume this is possible, I just can't wrap my mind around it. Let's say I have clip that's 30 frames long. I want to pick which frame of that clip is displayed based on logic, instead of just playing them in order. Can I use an expression or link the "current frame" status of that clip to a set of keyframes defined elsewhere?
Copy link to clipboard
Copied
If you are talking about the thumbnail in the Project Panel then you can't change that.
If you are talking about re-ordering the frames in the timeline then TimeRemapping is the solution. Set your time display to Frames by Ctrl/Cmnd click in the timeline to make it easier to count frames or if you want to count seconds and frames just leave it alone, then enable Time Remap (Alt/Option + Ctrl/Cmnd +t)
and then manually enter the frame number you want to have played back in the timeline. For example:
I pre-composed a moving shape layer so that it Time Remap would work, Ctrl/Cmnd Clicked on the Timeline Time display to change the display to frames, moved to frame 31 and entered 90 to change the timing of that frame. You are seeing frame 90 at the current time frame 31. The movie will now start with frame 0 at time 0 then quickly progress to frame 90 30 frames later giving me a speeded-up movie, then it will playback in slow motion from frame 90 to the end of the comp. Those speed changes are easy to see in the graph editor:
The limitation of this technique is that you will need to set a keyframe for every frame you want to play in a special order. If you want to play a frame for several seconds you can always toggle Hold Keyframes to do that.
You could write an expression or link to a JSON file that would playback frames in a specific order. Expressions for time are based on hours, minutes, seconds, and frames by default so you would need to start off converting time to seconds by dividing by the frame rate, then throw in the math you wanted to use. It could become very complicated very quickly.
It would really help if you could tell us exactly what you mean when you say "I want to pick which frame of that clip is displayed based on logic, instead of just playing them in order." because playing video in order is logical.
Copy link to clipboard
Copied
Thank you, I will try that.
I was being vague so as not to pigeonhole the solutions people suggest. But basically, I have a video clip and I want to animate its playback based on the properties of another object. The specific property I have in mind right now is the loudness of an audio clip. So when the audio gets louder, the clip shows frames toward its end, but when the audio gets quieter again, the clip shows earlier frames. That way it could act as a sort of "equalizer display" that's not just a bar of lights.
Copy link to clipboard
Copied
Take a look at the Time Remapping example at the bottom of this page from Expressions Gruhu Dan Ebberts: Speed Control
He makes a video speed up every time there is a beat. It should get you started. A little modification to his expression will make the video move forward and backward. A precise explanation of what you were trying to achieve would have pointed you to that solution about 44 minutes sooner. It is always preferable to post a detailed question that includes an explanation of your design goals.
Dan also has three additional techniques that you may want to look at for driving animations with audio.
Copy link to clipboard
Copied
Here’s a tutorial I did a long time ago covering this technique. It’s done on a very old version of AE but the technique should still work. 😉