Page MenuHome

VSE rendering of movie gets progressively slower
Open, Needs Triage by DeveloperPublic

Description

System Information
Operating system: Ubuntu 18.04.3 LTS
Graphics card: nVidia GM204GL [Quadro M4000]

Blender Version
Broken: 2.80, downloaded today from blender.org

Short description of error
When rendering a movie strip in the VSE, the render time for each frame gets progressively longer.
Here is a graph of the render time for a simple h264 file loaded in the VSE, and re-exported as another h264 file with some minor transforms (crop and scale)

This pattern seems to indicate a form of reset happens regularly. Upon inspection, these discontinuities happen for each I frame found in the h264 source. Therefore I assume that for each rendered frame, the image is reconstructed from the previous I frame, which requires evaluating each intermediate B and P frames. Is there any way to cache these frames ?

If we can't fix this, we may want to add to the wiki that you can get a very significant speed increase by encoding input files as motion jpegs, or at least reducing the time between I frames.

Details

Type
Bug

Event Timeline

Richard Antalik (ISS) closed this task as Invalid.Mon, Nov 25, 9:26 AM
Richard Antalik (ISS) claimed this task.

@Guillaume M (mathers)

Is there any way to cache these frames ?

Not directly.
We can cache each frame, or we can use proxies, which are designed to overcome this specific issue.

Caching B and P frames would speed up read from HDD, they should be pretty small however, so not much performance would be gained. It is the math involved to reconstruct the frame that is biggest problem here IMO.

If we can't fix this, we may want to add to the wiki that you can get a very significant speed increase by encoding input files as motion jpegs, or at least reducing the time between I frames.

Do you mean Blender manual?
In similar fashion there is https://docs.blender.org/manual/en/latest/troubleshooting/3d_view.html#performance
It would be very nice touch to create such page for VSE.

I doubt, that most first-time users would read it, but this problem should be explained.

What I don't want to do is to automatically start building proxies. Pethaps as a user preference this would be OK even by default.

Closing as invalid because if this task should exist it should be a TODO with relevant description.

Just pointing out that this is an issue for rendering, not preview !

Proxies are not used during render afaik. I agree the math involved to reconstruct the frame is the biggest problem, therefore keeping a cache of the last polled frames during render should solve this problem. This is not covered by the VSE preview cache, and would give a huge performance boost during renders.

Richard Antalik (ISS) reopened this task as Open.Mon, Nov 25, 1:46 PM

Just pointing out that this is an issue for rendering, not preview !

Thanks for correcing me.

Rendering job disregards any proxies and caches for quality reasons.
I think that in this case it is simple one-frame-per-stream anim cache, that is used to reconstruct next frame. I would say, that it does not make much sense disabling anim cache.

I can look in history, if and why it was disabled. It may be side effect of unrelated change.