diff --git a/scripts/ffmpeg_automator.py b/scripts/ffmpeg_automator.py index dba8147..7a88d5f 100755 --- a/scripts/ffmpeg_automator.py +++ b/scripts/ffmpeg_automator.py @@ -174,8 +174,14 @@ def get_hdr_setings(file_path): hdr_settings = {} + # Set up dictionary mapping for known replacements of ffprobe values to be used by svtav1-params + color_space_mapping = { + 'bt2020nc': 'bt2020-ncl', + 'bt2020c': 'bt2020-cl', + } + for frame in media_info['frames']: - hdr_settings['color_space'] = frame['color_space'] + hdr_settings['color_space'] = color_space_mapping.get(frame['color_space'], frame['color_space']) hdr_settings['color_primaries'] = frame['color_primaries'] hdr_settings['color_transfer'] = frame['color_transfer'] hdr_settings['pix_fmt'] = frame['pix_fmt'] @@ -211,7 +217,7 @@ def run_ffmpeg(input_path, output_path): if check_hdr(input_path): hdr_settings = get_hdr_setings(input_path) - encode_settings['libsvtav1-params'] = 'hdr-opt=1:repeat-headers=1:colorprim={color_primaries}:transfer={color_transfer}:colormatrix={color_space}:master-display=R({red_x},{red_y})G({green_x},{green_y})B({blue_x},{blue_y})WP({white_point_x},{white_point_y})L({max_luminance},{min_luminance}):max-cll={max_content},{max_average} -pix_fmt {pix_fmt}'.format(**hdr_settings) # noqa: E501 + encode_settings['svtav1-params'] = 'enable-hdr=1:color-primaries={color_primaries}:transfer-characteristics={color_transfer}:matrix-coefficients={color_space}:mastering-display=R({red_x},{red_y})G({green_x},{green_y})B({blue_x},{blue_y})WP({white_point_x},{white_point_y})L({max_luminance},{min_luminance}):content-light={max_content},{max_average} -pix_fmt {pix_fmt}'.format(**hdr_settings) # noqa: E501 ffmpeg = ( FFmpeg().input(input_path).output(