diff --git a/vid_convert.py b/vid_convert.py index 8950962..c62dcb2 100755 --- a/vid_convert.py +++ b/vid_convert.py @@ -182,17 +182,13 @@ def convert_audio(file, track, volume_adj, channels, channel_layout, language, t logging.error(result) -def convert_video(file, infos, start, crop, crf, animation, interlaced, vhs): - str_start = "{:05d}".format(start) - output = f'{file}_video_t{str_start}.mkv' +def convert_video(file, infos, crf, crop, enc_options, interlaced, vhs): + output = f'{file}_video.mkv' fmt = "yuv420p10le" track = infos['video']['index'] - codec = 'libx265 -preset slower' + codec = 'libsvtav1' + svtav1_params = enc_options hdr = '' - if animation: - tune = "-tune animation" - else: - tune = "" if interlaced: crop = f"{crop},yadif" if vhs: @@ -229,10 +225,22 @@ def convert_video(file, infos, start, crop, crf, animation, interlaced, vhs): max_luminance = int(int(max_luminance[0])*(int(max_luminance[1])/10000)) luminance = f'L\({max_luminance},{min_luminance}\)' master_display = green + blue + red + white_point + luminance - hdr = f'-x265-params hdr-opt=1:repeat-headers=1:colorprim={color_primaries}:transfer={color_transfer}:colormatrix={color_space}:master-display={master_display}:max-cll={light_level}' + hdr = f'mastering-display={master_display}:content-light={light_level}' + if svtav1_params: + svtav1_params = f'{svtav1_params}:{hdr}' + else: + svtav1_params = hdr except Exception as err: - logging.debug(f"Aucune information HDR : {err}") - command = f'ffmpeg -loglevel error -i {file} -map 0:{track} -ss {start} -t 300 -an -sn -c:v {codec} {tune} {hdr} -crf {crf} -pix_fmt {fmt} -filter:v {crop} -y {output}' + logging.debug(f"Aucune information HDR statique : {err}") + if 'hdr10plus' in infos['video']: + hdr10plus_param = f"hdr10plus-json={infos['video']['hdr10plus_metadata']}" + if svtav1_params: + svtav1_params = f'{svtav1_params}:{hdr10plus_param}' + else: + svtav1_params = hdr10plus_param + svtav1_args = f'-svtav1-params {svtav1_params}' if svtav1_params else '' + command = f'ffmpeg -loglevel error -i {file} -map 0:{track} -an -sn -c:v {codec} {svtav1_args} -crf {crf} -pix_fmt {fmt} -filter:v {crop} -y {output}' + logging.info("Encodage vidéo en cours (AV1-SVT)...") logging.debug(command) result = subprocess.getoutput(command) if result != "":