Ahojte. Mám 32-bitový lineárny float point výstup z OpenGL (áno som si na 100% istý, že je lineárny). Chcel by som z toho uploadnúť video na Youtube s 10-bitovou hĺbkou pretože 8 bitov vyzerá v tmavých odtieňoch hrozne.
Teraz moje neúspešné pokusy (screenshoty sú v priloženom obrázku, horný riadok je výstup z OpenGL).
Takže tento príkaz vyzerá na desktope OK a má 12 bitový výstup, ale youtube ho prevedie na 8 bit:
# 1 ffmpeg \ -r 60 \ -f rawvideo \ -s 1920x1080 \ -pix_fmt gbrpf32le \ -color_range pc \ -color_trc linear \ -color_primaries bt2020 \ -colorspace bt2020nc \ -i pipe:0 \ -y \ -crf 18 \ -c:v libx265 \ -c:a flac \ -pix_fmt yuv444p12le \ -preset fast \ -loglevel error out.mkv
Podľa youtube musí mať HDR video metadáta, takže ich pridávam:
# 2 ... -i pipe:0 \ ... -color_range pc \ -color_trc linear \ -color_primaries bt2020 \ -colorspace bt2020nc \ -x265-params colorprim=bt2020:transfer=linear:colormatrix=bt2020nc:range=full \ ...
To neberie, pretože používa lineárny transfer. Takže:
# 3 ffmpeg \ ... -i pipe:0 \ ... -vf zscale=rin=full:pin=2020:tin=linear:min=2020:r=full:p=2020:npl=200:t=arib-std-b67,format=yuv444p12le \ -color_range pc \ -color_trc arib-std-b67 \ -color_primaries bt2020 \ -colorspace bt2020nc \ -x265-params colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:range=full \ ...
Youtube to berie, ale vyzerá úplne naprd na všetkom, čím prehrávam. Keď však zmením vstupnú transfer funkciu na bt709 vyzerá to skoro dobre (ale prečo bt709 keď je vstup lineárny?)
# 4 ffmpeg \ ... -i pipe:0 \ ... -vf zscale=rin=full:pin=2020:tin=709:min=2020:r=full:p=2020:npl=200:t=arib-std-b67,format=yuv444p12le \ -color_range pc \ -color_trc arib-std-b67 \ -color_primaries bt2020 \ -colorspace bt2020nc \ -x265-params colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:range=full \ ...
Colorspace filter s lineárnym vstupom vyzerá rovnako zle:
# 5 ffmpeg \ ... -i pipe:0 \ ... -vf colorspace=bt2020:ispace=bt2020nc:itrc=linear:iprimaries=bt2020:trc=bt2020-12:irange=pc:range=pc:format=yuv444p12 \ -color_range pc \ -color_trc arib-std-b67 \ -color_primaries bt2020 \ -colorspace bt2020nc \ -x265-params colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:range=full:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1):max-cll=1000 \ ...
Ale zase s bt709 vyzerá skoro dobre, akurát farby sú rozhodené a jas tiež celkom nesedí
# 6 ffmpeg \ ... -i pipe:0 \ ... -vf colorspace=bt2020:ispace=bt2020nc:itrc=bt709:iprimaries=bt2020:trc=bt2020-12:irange=pc:range=pc:format=yuv444p12 \ -color_range pc \ -color_trc arib-std-b67 \ -color_primaries bt2020 \ -colorspace bt2020nc \ -x265-params colorprim=bt2020:transfer=arib-std-b67:colormatrix=bt2020nc:range=full:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1):max-cll=1000 \ ...
Aké parametre sú správne pre HDR určené na youtube?