73 lines
2.0 KiB
Python
73 lines
2.0 KiB
Python
import os
|
|
import subprocess
|
|
import time
|
|
from . import res
|
|
|
|
DEFAULT_BITDEPTH_HEVC = 10
|
|
DEFAULT_CRF_HEVC = 21
|
|
DEFAULT_PARAMS_HEVC = "aq-mode=1:qcomp=0.7:vbv-bufsize=9000:vbv-maxrate=9000:no-sao=1:no-strong-intra-smoothing=1:keyint=240:min-keyint=24"
|
|
DEFAULT_PIX_FMT_HEVC = "yuv420p10le"
|
|
DEFAULT_PRESET_HEVC = "slow"
|
|
|
|
def get_encoding_command_hevc(f):
|
|
filenameSample = os.path.splitext(os.path.basename(f))[0]
|
|
filenameEncode = ".".join(
|
|
[
|
|
filenameSample,
|
|
'HEVC',
|
|
'10Bit',
|
|
'Preset',
|
|
f'{DEFAULT_PRESET_HEVC}',
|
|
'CRF',
|
|
f'{DEFAULT_CRF_HEVC}',
|
|
'mkv'
|
|
]
|
|
)
|
|
filepathEncode = os.path.join(res.get_path_data_encodes_hevc(), filenameEncode)
|
|
|
|
cmd_parts = [
|
|
'ffmpeg',
|
|
f'-i "{f}"',
|
|
'-an',
|
|
'-c:v libx265',
|
|
f'-preset {DEFAULT_PRESET_HEVC}',
|
|
f'-crf {DEFAULT_CRF_HEVC}',
|
|
f'-x265-params "{DEFAULT_PARAMS_HEVC}"',
|
|
f'-pix_fmt {DEFAULT_PIX_FMT_HEVC}',
|
|
'-y',
|
|
f'"{filepathEncode}"'
|
|
]
|
|
|
|
return " ".join(cmd_parts)
|
|
|
|
def start_workflow():
|
|
res.bootstrap_folder_structure()
|
|
|
|
path_results_encoding_time_hevc_json = os.path.join(
|
|
res.get_path_results_encoding_time(),
|
|
res.get_filename_results_encoding_time_hevc()
|
|
)
|
|
results_encoding_time_hevc = res.read_dict_from_json_file(
|
|
path_results_encoding_time_hevc_json
|
|
)
|
|
|
|
for f in res.get_all_sample_files():
|
|
filename = os.path.splitext(os.path.basename(f))[0]
|
|
if filename in results_encoding_time_hevc.keys():
|
|
continue
|
|
|
|
time_start = time.time()
|
|
subprocess.run(
|
|
get_encoding_command_hevc(f),
|
|
shell=True,
|
|
check=True
|
|
)
|
|
time_encoding = round(time.time() - time_start)
|
|
|
|
results_encoding_time_hevc[filename] = time_encoding
|
|
|
|
res.write_dict_to_json_file(
|
|
path_results_encoding_time_hevc_json,
|
|
results_encoding_time_hevc
|
|
)
|
|
|