[FFmpeg-user] HDR bt.2020 to SDR bt.709 conversion
Dennis Mungai
dmngaie at gmail.com
Sun Oct 22 02:20:34 EEST 2023
On Sun, 22 Oct 2023 at 00:39, pehache <pehache.7 at gmail.com> wrote:
>
> Hello,
>
> I have trouble converting a 4K HDR video into a HD SDR one. Basically it
> plays much too dark and reddish in VLC (on macOS). The ffprobe output is
> this video is at the bottom of the post
>
> I first tried applying a curve filter to boost the dark tones. I works
> not too bad, but the reddish shift is still, if not amplified.
>
> Then I browsed the web and found a filter set that looks popular (I mean
> copied/pasted on many different pages):
>
> -vf zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709, \
> tonemap=tonemap=hable,zscale=t=bt709:m=bt709:r=tvformat=yuv420p
>
> But, well, it doesn't solve anything... Using "gamma" instead of "hable"
> gives a higher luminosity, but there's still a strong red shift.
>
> I tried many different things with the zscale filter, but the problem is
> that I don't fully understand the effect of the different parameters,
> although I'm not completly unfamiliar with the color profiles. It seems
> to me that all of this deals mainly the luminosity, and little with the
> chrominance.
>
> I have also found a page that describes how to convert from the bt.2020
> to bt709 profile, with a link to download a LUT file.
> https://www.binarytides.com/color-grading-hlg-videos-with-ffmpeg/
> https://nopixels.net/articles/hlg-to-rec709/
>
> So I tried the filter lut3d=nopixels_net_hlg2020_to_rec709.cube, with
> various combinations of the zscale filter, but could not obtain anything
> correct at the end. I always have reddish, or very reddish, or pinkish,
> color shifts...
>
>
> I'm a bit lost, now... Any help appreciated !
>
>
>
> ===============================================================
> *****$ ffprobe in0.mkv
> ffprobe version 4.4.4 Copyright (c) 2007-2023 the FFmpeg developers
> built with Apple LLVM version 9.1.0 (clang-902.0.39.2)
> configuration: --prefix=/opt/local --cc=/usr/bin/clang
> --mandir=/opt/local/share/man --enable-audiotoolbox --disable-indev=jack
> --disable-libjack --disable-libopencore-amrnb
> --disable-libopencore-amrwb --disable-libxcb --disable-libxcb-shm
> --disable-libxcb-xfixes --enable-opencl --disable-outdev=xv
> --enable-sdl2 --disable-securetransport --enable-videotoolbox
> --enable-avfilter --enable-avresample --enable-fontconfig
> --enable-gnutls --enable-libass --enable-libbluray --enable-libdav1d
> --enable-libfreetype --enable-libfribidi --enable-libmodplug
> --enable-libmp3lame --enable-libopenjpeg --enable-libopus
> --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libtheora
> --enable-libvorbis --enable-libvpx --enable-libzimg --enable-libzvbi
> --enable-lzma --enable-pthreads --enable-shared --enable-swscale
> --enable-zlib --enable-libaom --enable-libsvtav1 --arch=x86_64
> --enable-x86asm --enable-gpl --enable-libvidstab --enable-libx264
> --enable-libx265 --enable-libxvid --enable-postproc
> libavutil 56. 70.100 / 56. 70.100
> libavcodec 58.134.100 / 58.134.100
> libavformat 58. 76.100 / 58. 76.100
> libavdevice 58. 13.100 / 58. 13.100
> libavfilter 7.110.100 / 7.110.100
> libavresample 4. 0. 0 / 4. 0. 0
> libswscale 5. 9.100 / 5. 9.100
> libswresample 3. 9.100 / 3. 9.100
> libpostproc 55. 9.100 / 55. 9.100
> Input #0, matroska,webm, from 'in0.mkv':
> Metadata:
> encoder : libebml v1.4.0 + libmatroska v1.6.2
> creation_time : 2021-03-09T20:53:48.000000Z
> Writing frontend: StaxRip v1.7.0.3
> Duration: 00:49:10.18, start: 0.000000, bitrate: 4963 kb/s
> Chapters:
> [...]
> Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv,
> bt2020nc/bt2020/smpte2084), 3840x2160, SAR 1:1 DAR 16:9, 23.98 fps,
> 23.98 tbr, 1k tbn, 23.98 tbc (default)
> Metadata:
> BPS-eng : 4003363
> DURATION-eng : 00:49:09.197000000
> NUMBER_OF_FRAMES-eng: 70710
> NUMBER_OF_BYTES-eng: 1475838552
> _STATISTICS_WRITING_APP-eng: mkvmerge v50.0.0 ('Awakenings') 64-bit
> _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-09 20:53:48
> _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
> [...]
>
>
>
Please provide a sample of the input file and uncut output of the ffmpeg
command line in use.
More information about the ffmpeg-user
mailing list