Design Proposal for Video Sequencer Proxy System
Reason:
- Current proxy setup has so much options for just a simple task.
- It is slow.
Here is an addon we have created with Ffmpeg just to show some ideas how it may work. But C implementation would work more efficiently.
Which Features:
Global Proxy Folder:
- This is easier to maintain. Deleting/Cleanup is also simple.
- Reusable proxy setup. These proxies can be reused in new projects.
- We are using custom proxy directory for detecting the proxy.
- Preference has a delete proxy operator to delete the whole proxy in one click.
Ability to create proxy in library bin (in our case in File Browser).
Ffmpeg Command:
We are using this command for building proxy:
ffmpeg -i input.mp4 -vf scale=640:-2 -vcodec libx264 -g 1 -bf 0 -vb 0 -crf 20 -preset veryfast -acodec aac -ab 128k out.avi
-
This will create intraframes in h264 within an AVI container with a fixed width of 640 preserving aspect ratio.
-
Fixed ratio of 640:-2 (“-:2” is needed for x264 to use the scale filter which needs to be divisible by 2)
Details: FFmpeg Filters Documentation
Reasons we are using fixed width of 640 preserving aspect ratio are:
-
It’s straight forward. No need to make decision for variable size for a simple proxy operation.
-
Mixed media like HD and 4k can be used together with the same quality.
-
The interface can fit 640 width nicely.
-
Industry is going for 4k and 4k+. Where 25% proxy creates a huge file size of 960x540 for example.
-
Variable scaling also affects the encoding speed and frame blending.
-
We are using CRF for the image quality and file size instead.