Does the ProRes codec have technical problems?

Hi, I would like to ask you about the ProRes codec.
On the internet, sometimes I happen to read that the ProRes available in Shotcut, may have some functionality problems on some modern computers.
They are unfounded chattering, or is there really any compatibility problem or did it exist?
Thanks.

Shotcut uses the FFmpeg ProRes codec, which some claim - usually without evidence - that is not perfectly compliant since it is not Apple’s code.

Thanks “Tiro”, once again I thank you for this interesting answer.

Here is an example: https://discussions.apple.com/thread/8203516

There were probably some legitimate issues that led to this. However, bear in mind that the FFmpeg implementation has had nearly a couple of years to mature since this post. You can search to find the white paper as PDF, but it will not tell you anything more about this except that it is “unauthorized.”

The compatibility problem they refer to is the stream metadata for “encoder” in the resulting MOV file. FFmpeg doesn’t fill it out to ProRes specification by default. If you manually write that metadata, then your MOV file will pass the sniff test of most ProRes players on Mac. If you don’t write that metadata, some non-ffmpeg players will reject it without even trying any further. Unfortunately, Shotcut does not write “encoder” metadata and I’m not aware of a way to write stream metadata from an export preset. If you are writing a MOV file from command-line ffmpeg, you can fake it as described in this Blackmagic Design forum post:

https://forum.blackmagicdesign.com/viewtopic.php?f=21&t=51457#p355458

This is not all Apple is referring to.

Shotcut does set the codec vendor ID. If you want to include the colr atom, then add movflags=+write_colr in the Other tab.

BTW, the vendor ID apl0 mentioned in the article you linked is different than from FFmpeg wiki: https://trac.ffmpeg.org/wiki/Encode/VFX
Shotcut uses the value from the wiki: ap10.
According to the codec author, the value should be apl0 and I will make that change for the next version.

I found this page on apple.com listing all the authorized ProRes products. There are quite a few. I have a hard time believing all of them are not using code forked from one of FFmpeg’s prores codecs.

How would you feel about always including the write_colr flag in the export preset? I already do this in all of my ProRes presets. Without it, the color space is unspecified, meaning a video falls to the mercy of the 750,000 total pixels rule in Shotcut, or goes straight to BT.601 in regular media players. That is bad news for proxies and low-res preview exports of BT.709 sources because they will get interpreted as BT.601 when played back. Then users write to the forum about color shifts and you know the drill…

Yes, the AP10 vs APL0 vendor ID (in lowercase of course) is a very tragic and widespread typo because the lowercase “L” and “1” look identical in many typewriter-style fonts. To make matters worse, many Linux man pages also show the incorrect AP10 value. Fortunately, the vendor ID is not super critical. It’s usually the encoder metadata that’s the culprit if a video won’t load.

:boom: What an interesting technical analysis you are doing!

OK, I just added that for the next version 19.10

1 Like

Thank you as always!