← All ideas
  • Published 26 Sep 2024

Render video faster

When I render a video, I've noticed that Blender re-renders each individual frame, even though it's often no different from the previous frame. If it checked whether anything had changed before rendering each frame, it could simply copy these frames in the sequence, saving a lot of rendering time.

33.3%

Development Status: Open

Upvote 1 Downvote 2
guenther_thomas
26 Sep 2024

16 Comments

thorn

That's not how this works.

2
ManBlender

In with version blender not rendering this same image if on time line are whole copied?

Jordan-Henshaw

What is this response? It's not a response. Blender's video rendering performance is absolutely pitiful compared to any other video editor. That's the only reason I now refuse to use it. It takes 5x longer than Premiere for the exact same task. I'm not smart enough to know what the proper solution is, but "That's not how this works" is not a response.

Jordan-Henshaw

I'm not smart enough to know what the correct solution to this is, but I totally agree that Blender's performance here is absolutely pitiful compared to any other serious video editor. It's usually 5 times slower than Premiere, FCP, iMovie, the like, for the exact same task. Whether the answer is what you're talking about or something different, there are people who know how to solve this problem. It's already a solved problem. Blender just needs to catch up.

ManBlender

Some dev should report on post what is solved maybe...

Lauloque

When you say you "render a video", do you mean you made some form of video editing, compositing? Or even a 3D scene to render with Cycles/Eevee? In which case there is indeed some "render" to do, and that technically can have a few frames that are technically identical but are processed indiscriminately. I don't think there is an easy way for Blender to tell when there is a change or not. You can sort-of deduce some of it via the presence of keyframes, or manually set frame ranges.

For this user case, the Loom addon offers you tools to specify which frames to render and automatically make copies to fill out the blanks in the output frame sequence. See:

p2or/blender-loom: image sequence rendering, encoding and playback

If you mean that you have frames that you encode into a video with nothing to compute in between, then I don't think the encoder cares whether you have identical frames or not. It's one frame after another, it just encodes them as any other frames. However, most codecs do adapt to the amount of change within a chunk/pixel through time, it's a huge part of how they get the file size down (and why you see blocky videos on YouTube). But that's the codec's job, not Blender's.

Jordan-Henshaw

"I don't think there is an easy way for Blender to tell when there is a change or not." - are you a Blender dev? I'm sorry but I'm pretty sure you can even figure that out with Python through bpy.

Jordan-Henshaw

This loom addon has nothing to do with video. OP is talking about video.

CraigJones

Or, you know, you could do this yourself by setting the frame range to only cover frames you need to render to images, and use that single image as a strip for the range you want to occupy time with.

Jordan-Henshaw

This is talking about about rendering video, as in an mp4, not separate image frames.

CraigJones

Render to frames or image sequences is how large projects are developed, not compressed to video and lossy. Getting the animation out to frames with lossless quality helps with color management down the road in the project, and is easier to modify like in the tip I gave of having that one image that accounts for that long span of time and stretching that to meet the required timeframe, then adding the rest of the images in sequence as a second strip. Add sound, add overlays, boom render to video. The OP is talking about rendering to video, yes, but it is not clear on why they need it to render a non-changing image over and over again 'faster' when they could do something manually to speed things up. Anyway, good point, have fun blending.

Jordan-Henshaw

Comments about 3D graphics have absolutely nothing to do with Blender's performance as a general video editor. Many people use it for workflows thoroughly divorced from anything resembling 3D graphics. The way it "feels" is way better than any of the video editors in my opinion, it feels "organic". But it's render time is absolutely atrocious. And it doesn't have to be.

Jordan-Henshaw

"Render to frames or image sequences is how large projects are developed, not compressed to video and lossy. " ??? Video is pretty important for showcasing your work. OP's comment is entirely valid. This is a critique of Blender's VSE. The VSE's entire job is video, so devaluing the legitimacy of video doesn't make sense.

CraigJones

Re-read: "If it checked whether anything had changed before rendering each frame, it could simply copy these frames in the sequence, saving a lot of rendering time". This OP has zero to do with Blender performance hit on video with memory and GPU/CPU but the OP wants Blender to know that they didn't need to render 100 frames of non-movement when that it exactly what they decided to render to begin with. My suggestion is to plan ahead and examine what you need before rendering 100 of the same frame. Blender is not going to add an AI project manager any time soon, so the OP needs to do the work before pressing Render Animation.

CraigJones

Your comments about VSE performance due to Blender not doing what it is supposed to do is laughable - buy a cheap Dell workstation, upgrade it, and then spit out video like its running water.