Reducing Rendering Time: Video Editing System Specs:




Intel i7 930 @ 2.80Ghz
16 GB DDR3 Gaming RAM
64-bit Windows 7 Ultimate
Nvidea GeForce GTX 780
1 TB Western Digital HDD (non-SSD)




Blender Settings:




Audio Dev: SDL
Compute Device: CUDA GeForce GTX 780
OpenSubdiv Compute: OpenMP
Memory Cache Limit: 10240
Anisotroptic Filtering: off
VBOs: ENABLED
Window Draw Method: Automatic, No MultiSample




So I have been using blender for youtube video's I've been making, since I need a free/open source video editor. I've been rather satisfied with the editing itself. With the rendering however, I have not.

I have rendered a 40 minute video in both Blender, and Adobe CS5 Premiere.

Video Specs:



Settings used for BOTH blender AND Premiere


1 video imported
2 images (intro &amp; outro fade)
1 music track (outro for about 15 seconds)
Audio Codec: AAC (same as source)
Audio Rate: 192 kbps (same as source)
Stereo Audio (same as source)
Resolution: 1080p (same as source)
Framerate: 60fps (same as source)
Video Codec: H.264 (recorded in x264)
Video Rate: +-8000 mbps (same as source)
Format: MPEG-4 (same as source)


Blender Specific:


GOP size: 30
Tile Size: 256x256 (seemed to be the fastest?)
Start Resolution 64
Output: Xvid




What I found was fairly displeasing.



Blender takes up to 6 hours to render the video, and produce a file of about 2.5 GB.

Adobe Premier takes about 1 hour to render the video, and produce a file of about 1.9 GB.



Both programs I have configured to the best of my abilities to fulfill the recommendations set by Youtube/google, which can be found here: https://support.google.com/youtube/answer/1722171?hl=en

Not only this, but whilst monitoring my components, I found the following things:



Blender uses 5 GB of RAM, about 20% of my CPU and about 5% of my GPU.

Premier uses 2 GB of RAM, about 75% of my CPU and about 1% of my GPU.



So my question is:
Can I configure blender in a way that it performs more favorably? (like Premiere)

I can accept it if it renders for say 2 hours, but if you take over 5 times as long as is required (apparently), then that definitely means I'll not be continue using blender for editing video's.
TL;DR:  No, because the Blender VSE is single-threaded.

I haven't done a code dive, but what it looks like Blender is doing is serially feeding each frame through its respective pipeline then into the encoder.  That means the only time Blender will multithread or use GPU when rendering video is if a specific frame uses a pipeline that multithreads.

You'll find this is also true of proxy generation.  Rebuilding proxies in Blender will always single thread.

For my workflow, I've gotten around this bottleneck by making use of a chunking and stitching method similar to bpsrender.