FFmpeg Prores explained.

posted in: 422, 444, ffmpeg, Prores | 0

Go to FFmpeg
More about Prores and its white paper here(pdf).
Thanks to Phil for the sample.

Prores is an intermediate codec, meaning, it is visually lossless. It is best used during acquire, editing, and preserving. It will use more room to store but quality will be preserved should you need it in the future. Other delivery codecs offer more compression, using less space, but you sacrifice quality in-order to use the least amount of storage capacity.

As you may be aware or not, FFmpeg can now encode video to Prores.
You can download FFmpeg for OSX or Windows at the link above.
For Windows, the executable will be ready to go.
For OSX, you will need a way to extract FFmpeg from the .7z archive. Use Unarchiver.
FFmpeg is most likely functional for Linux through the same procedures on OSX.
You might need to make FFmpeg an executable on OSX. chmod a+x ffmpeg
According to version 2.8(ffmpeg), there are three Prores encoders.
./ffmpeg or ffmpeg -encoders
prores, prores_aw, prores_ks
 
Infact it appears that prores and prores_aw are one and the same.
You can use prores_ks @ 4:4:4 for alpha channels but that is beyond this article.
Grab the sample video here => Sample
You can get other samples here. Big buck bunny
Here is a simple conversion command to encode a .mov(h264) to prores. (On OSX)
./ffmpeg -i phfx_com.mov -c:v prores -profile:v 3 side_faceProfile3.mov
 
There are different profiles levels when it comes to encoding to prores.
Levels
——

0: ProRes422 (Proxy) – apco
1: ProRes422 (LT) – apcs
2: ProRes422 (Normal) – apcn
3: ProRes422 (HQ)- apch

From the example above, using phfx_com.mov(42.2MB) file,
-profile:v 0 gives a 11.4MB size and moves you to 10-bit 4:2:2 space.
-profile:v 1 ranges at around 28MB, it too is in 10-bit 4:2:2 space.
-profile:v 2 moves us up to 45.2MB with 10-bit 4:2:2 space and finally
-profile:v 3 goes to 67.9MB at 10-bit 4:2:2
 
There is also one -pix_fmt for prores and prores_awYUV422P10
Here is a line:
./ffmpeg -i phfx_com.mov -c:v prores_aw -profile:v 1 -pix_fmt yuv422p10 side_face_aw_422.mov
 
——————————————————————————————-
Now let us move on to prores_ks.
From the little experiments, prores_ks has a smaller footprint compared to prores
Here are the -pix_fmt available for it.
-YUV422P10
-YUV444P10
-YUVA444P10
— with Alpha Channel

Now a line with KS(Konstantin Shishkov)
./ffmpeg -i phfx_com.mov -c:v prores_ks -profile:v 3 side_faceProfile3_KS.mov
You should notice that ffmpeg defaults to 422 if you do not specify it.

What about 444? An example:
./ffmpeg -i phfx_com.mov -c:v prores_ks -profile:v 4 -pix_fmt yuv444p10 side_faceProfile4_KS_444.mov
Yes, that is a fifth profile only available in KS.

Here are the profiles in total:
PRORES_PROFILE_PROXY = 0,
PRORES_PROFILE_LT,
PRORES_PROFILE_STANDARD,
PRORES_PROFILE_HQ,
PRORES_PROFILE_4444,

444 with audio?
./ffmpeg -i phfx_com.mov —i audio.m4a -c:v prores_ks -profile:v 4 -pix_fmt yuv444p10 -c:a aac -strict -2 -b:a 256k output.mov

-strict -2 can be switched with -strict experimental
Audio codec is native aac(-c:a aac) @ 256k.

Evidently, the .m4a audio is aac. So let’s just copy(source original) it to the output instead.
./ffmpeg -i phfx_com.mov —i audio.m4a -c:v prores_ks -profile:v 4 -pix_fmt yuv444p10 -c:a copy output.mov




Leave a Reply

Your email address will not be published. Required fields are marked *