Feature request: proxy files

Hi,

Is it possible to add proxies?

I’m used to convert my H264 files to DNxHD, with FFMPEG, in order to handle them (1080p@60fps) in video editors (not Shotcut for the moment). But I need to relink original files manually.

I imagine a system where you choose size of the proxy (1x, 0.5x, 0.25x).
The clip would have max 4 “links”, one to the original files and one for each proxy file.
We could switch between these four qualities during editing.

And a checkbox when it’s time to export “Use original files”

Thanks

PS: sorry for the english

2 Likes

Hi,

I made some tests with intermediate codecs FFMPEG can produce.
Competitors are:
-MJPEG
-DNxHD
-Apple ProRes
-HuffYUV

First, DNxHD and ProRes are out, because they work with specific resolution/fps. So you can’t have proxy 25% or 50% with a 1080p video. Plus, they’re the slowest encoders.

HuffYUV is lossless. It’s the fastest encoder but it produces the largest files, by far. I don’t test other lossless codecs because of the disk space usage.

Remains MJPEG. It seems quality doesn’t affect speed encoding, so we can choose anything. And it accepts all résolution, so we can work with percentage.

I look at other software which use proxies: Pitivi and Blender. They create proxies with MJPEG codec. Blender use quality 90%, nearly -q 4 for FFMPEG MJPEG (I don’t test Pitivi, I’m on Windows). Note MJPEG q4 in my encoding tests produce the same bitrate as DNxHD 36.

My tests are made on a i7-4790. I took the first 120 s of Big Buck Danny (1080p, H264, 24fps).

Proxy 100%:
-HuffYUV: 318 Mbps, 166 fps encoding speed
-MJPEG q4: 37 Mbps, 142 fps encoding speed

Proxy 50% (rescale algo: area):
-HuffYUV: 89.2 Mbps, 423 fps encoding speed
-MJPEG q4: 12.7 Mbps, 292 fps encoding speed

Proxy 25% (rescale algo: area):
-HuffYUV: 24.5 Mbps, 556 fps encoding speed
-MJPEG q4: 4064 kbps, 458 fps encoding speed

MJPEG uses a little more CPU in Shotcut but file size is very small. Think it’s a 1080p24 clip. My cam produce 1080p60 clips for example, and new cams are 4K.

You can see Blender Velvet Revolver.

This is a crucial feature, it is sad to see that there are no plans for it.

A workaround exists, but it would’ve been much easier if it was built in.

Funnily, the main page lists “Support for 4K resolutions” as one of the features, yet I see no way this could be useful without proxy support.

[Just a heads up: http://eyeframeconverter.wordpress.com is a simple tool to either batch convert source material to edit friendly codecs like prores, dnxhd or mjpeg, or convert to intermediate and proxy files in one go. And finally it can swap the files externally. Some people also use to convert variable frame rate video files to edit friendly constant frame rate video files.]

Unfortunately, eyeframeconverter is a closed-source tool that is only available for Windows. Not an option at all. :confused:

No, It’s open source. The source code is included in the download.

It runs on Linux too with Wine.

@tin2tin1266027, the download link points to some .exe file which you get through some suspicious ad network. I’m not sure where the source is, maybe it appears somewhere after you run this untrusted executable file…

But anyway, let’s stay on topic. For example, does anybody know what would it take to implement proxy support in shotcut? Any tips for potential contributors?

If you want the backstory of Eyeframe Converter then here it is: https://www.lwks.com/index.php?option=com_kunena&func=view&catid=23&id=30817&Itemid=81

The exe file is the installer and when you install it there will be a folder called ‘source’(coded in AutoIt).

My son was born during the long periode of time I coded this free tool, and adf.ly(which is also mentioned at the download link) is showing the downloaders a commercial, so I can buy my little boy a present once in a while. I think this is a fair deal.

I agree with you that proxies would be a nice-to-have feature for ShotCut, but the developers proberly have a lot of need-to-fix/add, before getting to this feature.

Alternatively you could put up a bounty on that feature if the developers can see the need for implementing that feature. OpenToonz is about to get MyPaint brushes that way for bounty of 150$.

Proxy workflow in Resolve: https://youtu.be/LpdrpNPZjRo