Proxy Editing

The hash solves a separate problem: What happens if somebody replaces the original video with a new version and keeps the same file name? The proxy is no longer representative of the new video. A new proxy needs to be made. But how is Shotcut supposed to track whether original videos get swapped and whether a proxy is up-to-date? The hash is the link between the original and the proxy. If the original video changes, the hash of it would change as well. If the hash doesn’t have a matching proxy, then Shotcut knows to generate a new proxy.

To your point, it could maybe be possible to use filenames plus “_proxy” but then use the rule of same date/time stamp to determine if a proxy is up-to-date with the original. But this isn’t as foolproof as a hash.

2 Likes

To add to @Austin’s post, the hash code is the specific identity of that very specific file and has nothing to do with whatever the file name is. Think of the hash code like your finger print. You can change your name but you can’t change your finger print. People may not find you if you change your name but if they get a match on your finger prints then they have identified you. Same basic idea works here. So let’s say you made a proxy for a video to use on a project. Then later after that project you change the name of that video and use it on a new separate project. Even though you changed that file’s name, Shotcut will still be able to link that video with the proxy that was made before for the first project thanks to the hash code.

4 Likes

Thank you, this makes it clear.
As an advanced computer user it is good practice to add a version number if you tend to change a file or video clip. Normally i would only use raw clips from a camera - this would never be changed. So for my purpose i would still consider it more practical to use file names instead of hash codes, even considering the problem you mentioned. I would guess this holds true for 90+% of all users - maybe i am wrong?

Also, after finishing a project i normally delete all proxies to save space. If i would ever re-use a clip for another movie, i would just have to redo the proxies. But the workflow may be very different from user to user…

Considerations:

  1. Let’s say I copied files from my camera card, or downloaded a video from a stock site. Let’s say a power outage happened while copying camera files which left only a partial transfer, or an interrupted download gave me only the first half of my stock video. Let’s say I don’t realize this until I’ve started editing. Many video formats are able to play and convert into proxy despite corruption or missing data in the second half of the video. So, in this situation, I want to re-copy or re-download my videos, but keep the same filename because they literally are the same files, not revisions. How is a proxy built on a corrupt version supposed to know the original changed so it can rebuild itself? A hash will notice it; a filename match will not.

  2. Suppose I am 80% done editing a project, and a long video clip I’ve already placed on the timeline has a lot of noise in it. I could add a “Reduce Noise: Wavelet” filter on the clip, but that filter is super sloooowz and breaks my ability to do quick exports to verify my work. I could turn that filter off until the final export, but that’s one more step I could potentially forget to do, and would cost a lot of time to redo. What I might prefer to do is separately denoise that one clip and replace the original file with the denoised version, including the same filename. This way, I retain all the edits I made against that clip. Had I given it a new name, I would have to drag the new file onto the timeline and cut it up exactly the same way the original version was, which takes time and is extremely error-prone. Or I could edit the .mlt file in a text editor and update the references manually, but this is also tedious and error-prone.

  3. Shotcut allows the project folder to have subfolders. Each subfolder could have sets of files with the same filenames as the other subfolders. An example is time lapse images starting at P0000001.JPG, and each subfolder holds a time lapse sequence for a different date. (Imagine we are building proxies of super-high-resolution images here.) How do we match by filename now? There are duplicate filenames. To match by filename, we also have to capture the entire directory structure to preserve a fully-qualified unique path. Given that Shotcut allows files to be dragged in from outside the project folder, from totally different drive letters and mount points even, there’s no way to represent that level of uniqueness with a filename alone.

  4. Even if #3 were possible, what happens when a user re-arranges media in the project folder? Suppose they had a bunch of items in the playlist and made proxies, but there were too many files to manage. They empty the playlist, sort their videos into subfolders under the project folder, then bring subfolders back into the playlist one at a time. If proxy matches were made by filename using fully-qualified directory structure, nothing would match anymore because the user changed the location of the originals. Shotcut would think “proxies are missing” and rebuild them when this isn’t necessary. All Shotcut needs is a way to link proxies to the correct originals regardless of the location of the original. Hashes can do that.

I’m not saying that filename matching can’t work or be easier in simple scenarios. It can. However, requiring “simple scenarios” is a big caveat.

Thanks Austin for your detailed opinion and consideration. Agreed, there are cicumstances where hash codes are preferable. I never was in the situation of one of your 4 points but of course people (including me) could be. In most situations there would be easy workarounds - its more a matter of workflow and comfort. For my (simple) workflow it would just be more comfortable to have readable filenames and i guess that holds true for the big majority of users. To use hash codes is more on the safer side to avoid these problems but on the other hand you have other problems, not knowing what proxies belong to which clips. I end up deleting all proxies after a project and in most cases i would never need them again. Anyway, this is not a big problem either way :slight_smile:

I want to generate a proxy for a MLT-as-clip. The properties tab for MLT-as-clips is empty, there is no such thing as the Make Proxy.

The option for that workflow I think would be like this:
Export the MLT project in a lossless format (UtVideo for example).
Import that file into the new project.
The proxy will be generated automatically.

@ejmillan I wonder if generating the proxies in the MLT before importing it as a clip in the other project would work.

It will have to be checked. Oops, wait a minute… now it’s my bedtime. Maybe on the other side of the Atlantic, you’ll be more awake after this time. Good luck with the tests. :grin:

Seeing as how Brian added the warning I suggested if anyone tries to export a frame in the middle of proxy mode, is it still necessary to keep this listed under the Known Problems section?

@shotcut, can you explain this part of the documentation?

As the Replace command is still immature, we do not want someone to open a big old project, generate proxies for nearly everything and have it murder your project! Rather, once all of the jobs are done, reopen the project to pick up the proxies.

I’m not too clear on this. How can generating proxies for a big old project possibly “murder” that project?

Hi, thank you very much for this feature, I was so annoyed from the stuttering when I edit videos and I am happy that this got now added! :slight_smile:
(and I also discovered how overblending a clip works^^, that does really need proxys!).

But now have I a question:
Can I set somewhere that the proxy Clips get auto deletd when I close shotcut? When it crashes it should keep it, but delete them when I close shotcut.
I don’t want to delete them always manually :confused:

I hope I am here correct to ask this, I will wait a few days and then try to ask it somewhere other :smiley:

No.

If you want to make it simpler for yourself make sure to set the folder for proxy files in the project folder then when you are done with that specific project you just delete the one project folder and with it the proxy files that are in there.

1 Like

The problem is that Shotcut won’t know if you are closing the program for the night, planning to work on it some more tomorrow, or closing it for the final time … or “closing” it due to a crash. (Of if you are like me … closing it, only to realize that there is one little thing I want to change.) If Shotcut deleted the proxies every time it is closed, there would be a lot of possible situations where you had to re-create the proxies the next time you used it.

I suppose one could set up something that would delete the files after 6 months of non-use … but I think it would be easier to do something like DRM suggests.

You can also do this manually by Settings > Proxy > Storage > Show… Your file manager opens. Sort the files in the files in the file manager by date. Delete oldest files. Shotcut updates the modified date and time each time it “uses” a proxy. This is done to eventually provide automatic size/age management in a cross-platform manner, but it is not yet included.

3 Likes

Thats how I made it now.
I do not use project files, so a Project folder is also not a solution, it would be nice if it get always deleted, as option.
If I have to reopen a prject, then I will wait that the software make a new proxy.

With Proxies turned on, if I add clips to my playlist (either in a batch, or individually), ShotCut creates a proxy of the first clip - which it then uses for all the other clips!
The filenames are camera clips which are sequentially numbered, so I suppose that means the filenames are very similar (but they are different) - is this a possible cause of ShotCut applying the first proxy it makes to all the clips (and not creating proxies for the other clips at all)?
Any ideas how I can stop it doing this?
Many thanks!

День добрый, при редактировании видео с большим качеством начинает зависать при нажатии кнопки плей, примерно раз в 10 секунд,происходит воспроизведение видео. Может конечно комп средний, но можно ли в настройках программы Шоткат или компа еще увеличить производительность его? Было ОЗУ 8ГБ, поставил 16ГБ, чуть только изменилась ситуация.В программе самой есть настройки для увеличения или облегчить чтоли само видео при редактировании его? Подскажите плиз, спасибо заранее :wink:
P.s. железо ОЗУ 16 гб, процессор AMD FX™-6300, видяха Nvidia GF GTX 760.

I am trying to make a very long video from dashcam files. It has 80 clips, about 5 min long each, around 244G total data.

Shotcut has made over 134 files, and is still going. It looks like it is also making “converted” files in addition to those labeled “Proxy,” but I am not clear why.

I thought it would make 80 proxy files and then I could begin putting this adventure together.

Am I missing something?

Apparently I did something to generate a bunch of unneeded files. I deleted those files, then started editing with the proxy files.

I wish I could figure out a way to order the files with the proxy files together in chronological order.