1
$\begingroup$

I have a video which I want to fast-forward during some sections. I can accomplish this by adding speed control, keyframing the speed factor, and for audio keyframing the pitch. This works well if I just render the video as is after that, making no more edits. It seems to render correctly, but problems arise when editing.

If I start playing the video from any other point but from before the first keyframe, the audio is way out of sync with the video which makes it impossible to do smaller edits in the video editor, like for instance add subtitles or restore the playback speed.

Why is it doing this and is there an way around it? Is this even the way to go for fast-forwarding?

$\endgroup$
5
  • $\begingroup$ I think , it's the correct way but maybe you can supply a few more details (blender-version, type of video, ...). However, I can't reproduce your problem with Blender 2.92. I follow the steps as explained by Michael Chu (youtube.com/watch?v=67lnjV6SrFw), using a countdown strip from the internet (youtube.com/watch?v=67lnjV6SrFw). This is a constant framerate video. Maybe, it has something to do with that? $\endgroup$
    – Husch
    Nov 27, 2020 at 10:02
  • $\begingroup$ I have tried it in both 2.83 and 2.90. The input video is a matroska with a h264 60 fps video stram and a vorbis 48 kHz audio stream. I render in 60 fps. I think you unintentionally sent the same link twice. I can try following those steps if you update the link. $\endgroup$
    – nijoakim
    Nov 27, 2020 at 16:01
  • $\begingroup$ Sorry. The first link is from Michael Chu's channel. He has a couple of videos about the speed ramp. The most recent is youtube.com/watch?v=49lDOqfxVTk. Can you check also if your video is constant or variable framerate? You can do this with a program like Mediainfo; see mediaarea.net/en/MediaInfo). If it is variable frame rate, maybe you have to convert it first to constant framerate. You can use Handbrake (handbrake.fr) for that. $\endgroup$
    – Husch
    Nov 28, 2020 at 18:57
  • $\begingroup$ I checked out the video. I think I'm doing it pretty much like he does. Also the frame rate is constant according to MediaInfo, so I don't think that's the issue. $\endgroup$
    – nijoakim
    Dec 1, 2020 at 19:15
  • $\begingroup$ This issue is very real, and it's quite frustrating, as blender seems to be the only open source video editor for Linux that is currently capable of smooth speed ramping. You can easily test it by looking at the audio waveform. If you keyframe the Speed Factor, the playback will be out of sync with the waveform, but in sync with a video having a Speed modifier strip with the same keyframes, but if you start playback from after the keyframe, it will again be in sync with the waveform instead of the video. (Also, keyframing the Speed Factor of a video strip does something very different.) $\endgroup$
    – Isti115
    Jan 16, 2023 at 21:16

1 Answer 1

1
$\begingroup$

The following seems to work. I’ve included the blend-file.

The movie is ”Spring” from the Open Movie project of Blender. You can download it here. Let’s say you want to speed up the movie from time 16+23 (frame 407); just after the falling waterdrop with distinct sound until the dog chasing after the wood stick (time: 42+23 or frame1031).

  • Add the movie. The frame rate is 25 f/s.
  • Add speed Control effect strip
  • Disable stretch to input Strip Length. Set the speed factor to 1.
  • Place timeline cursor at position frame 406. Keyframe the speed factor to 1.
  • Select the sound strip and keyframe the pitch to value 1.
  • Select the speed Control strip
  • Move to frame 407. Keyframe the speed factor to 3 (triple the speed)
  • Select the sound strip and keyframe the pitch to value 3.

So, you create a very abrupt speed up from frame 407 (see the block profile in graph editor in figure 1). Now comes the tricky part. You want to triple the speed until the original time 42+23 or frame 1030. But the actual frame 1030 (after the speed up) is now way further in the timeline. You can see this happening, if you select the actual frame 1030 and disable the speed control (shortcut: H).

So, until which frame or time do we have to speed up? You want to play the original time period of 26 s (42+23 s – 16+23 s) with 3x speed. So, it will only take 26s/3 = 8+16 s. So, the speed control should be reset to one after 8+16 s or at time 25+14s or about 614. The calculation in terms of frames is the same. The original range of 1030 – 407= 623 frames is played at 3x. So, they will take only about 623/3 or about 207 frames of time. The speed control should be reset at 407 + 207 = 614.

  • Select the speed Control strip. Move to time 25+14 or frame 614.
  • Keyframe the speed factor to 1.
  • Select the sound strip and keyframe the pitch to value 1.

Don’t forget to View > Refresh All (Ctrl+R) to remove the eventual cache. The indicated period will be played at 3x no matter from where you start.

Example

$\endgroup$
2
  • $\begingroup$ Not sure what you mean by that I can download the movie from YouTube. I ripped it with youtube-dl and used it in your in project; Not sure if that's what you wanted me to do. Although, I got an mkv instead of an mp4, but converted it to an mp4 with ffmpeg. However, I still get the same problem. Audio is not in sync with the video. Your project is basically identical to what I already have anyway. $\endgroup$
    – nijoakim
    Dec 3, 2020 at 21:06
  • $\begingroup$ I just discovered that it is out of sync even if I don't keyframe anything, only modify the playback speed. I submitted a bug report here: developer.blender.org/T83380. $\endgroup$
    – nijoakim
    Dec 3, 2020 at 22:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .