...
- https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-ffmpeg/
- https://codecalamity.com/encoding-settings-for-hdr-4k-videos-using-10-bit-x265/
- https://support.frame.io/en/articles/4305241-creating-hdr-files-for-frame-io
- https://stackoverflow.com/questions/69251960/how-can-i-encode-rgb-images-into-hdr10-videos-in-ffmpeg-command-line
- https://brandur.org/fragments/ffmpeg-h265
HDR
- https://developer.apple.com/av-foundation/High-Dynamic-Range-Metadata-for-Apple-Devices.pdf
- https://www.avsforum.com/threads/open-source-video-testing-calibration-patterns.2944378/
- https://github.com/test-full-band/tfb-video/releases
- https://trev16.hatenablog.com/entry/2021/07/23/145725 – good site for HDR test sites.
ProRes
There are four Prores encoders, Prores, Prores_ks, Prores_aw and now with ffmpeg 5 VideoToolBox Prores, which is a hardware based OSX M1 encoder/decoder.
From https://trac.ffmpeg.org/wiki/Encode/VFX the recommendation is to use Prores_ks with -profile:v 3 and the qscale of 11
Options that can be used include:
- -profile:v values can be one of.
proxy
(0)lt
(1)standard
(2)hq
(3)4444
(4)4444xq
(5)
- -qscale:v between values of 9 - 13 give a good result, 0 being best.
- -vendor apl0 - tricks the codec into believing its from an Apple codec.
Using this with the usual color space flags, seems to work well with the exception of ffmpeg itself, which needs the flags:-vf scale=in_color_matrix=bt709:out_color_matrix=bt709 added to the command to ensure the right input colorspace is recognised, e.g.:
ffmpeg.exe -i INPUTFILE.mov -compression_level 10 -pred mixed -pix_fmt rgba64be -sws_flags spline+accurate_rnd+full_chroma_int -vframes 1 -vf scale=in_color_matrix=bt709:out_color_matrix=bt709 OUTPUTFILE.png
However, other encoders seem to be recognised correctly, so there is clearly some metadata missing. I did try using the prores_metadata filter to try adding some additional parameters, but it didnt seem to help.
ffmpeg.exe -i ./chip-chart-yuvconvert\basicnclc.mov -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 chip-chart-yuvconvert\basicnclcmetadata.mov
TODO:
- Figure out the missing metadata.
- Wedge qscale values
- Do some colorspace tests with different qscale values to see where color breaks down.
VMAF
I did explore using VMAF - Video Multi-Method Assessment Fusion as a way to quantify the compression, the notes for setting this up are below, however I think we are going with a fairly high compression factor , so I think this is probably not really going to help us much.
...
Numeric Value | String Values | Description |
---|---|---|
1 | bt709 | |
9 | bt2020 | |
11 | DCI P3 | |
12 | P3 D65 / Display P3 |
Multimedia | ||
---|---|---|
|
Color Transfer Characteristic aka color_trc
...