diff --git a/facefusion/exit_helper.py b/facefusion/exit_helper.py index 9cf4b101..f10dcf2d 100644 --- a/facefusion/exit_helper.py +++ b/facefusion/exit_helper.py @@ -28,7 +28,7 @@ def graceful_exit(error_code : ErrorCode) -> None: while process_manager.is_processing(): sleep(0.5) - if state_manager.get_item('output_path') and not state_manager.get_item('keep_temp'): + if state_manager.get_item('output_path'): clear_temp_directory(state_manager.get_item('temp_path'), state_manager.get_item('output_path')) hard_exit(error_code) diff --git a/facefusion/ffmpeg.py b/facefusion/ffmpeg.py index 9f04c220..812119b8 100644 --- a/facefusion/ffmpeg.py +++ b/facefusion/ffmpeg.py @@ -109,7 +109,7 @@ def get_available_encoder_set() -> EncoderSet: def extract_frames(target_path : str, output_path : str, temp_video_resolution : Resolution, temp_video_fps : Fps, trim_frame_start : int, trim_frame_end : int) -> bool: extract_frame_total = predict_video_frame_total(target_path, temp_video_fps, trim_frame_start, trim_frame_end) - temp_frames_pattern = get_temp_frames_pattern(state_manager.get_item('temp_path'), output_path, '%08d', state_manager.get_item('temp_frame_format')) + temp_frames_pattern = get_temp_frames_pattern(state_manager.get_item('temp_path'), output_path, state_manager.get_item('temp_frame_format'), '%08d') commands = ffmpeg_builder.chain( ffmpeg_builder.set_input(target_path), ffmpeg_builder.set_media_resolution(pack_resolution(temp_video_resolution)), @@ -221,7 +221,7 @@ def merge_video(target_path : str, output_path : str, temp_video_fps : Fps, outp merge_frame_total = predict_video_frame_total(target_path, output_video_fps, trim_frame_start, trim_frame_end) temp_video_path = get_temp_file_path(state_manager.get_item('temp_path'), output_path) temp_video_format = cast(VideoFormat, get_file_format(output_path)) - temp_frames_pattern = get_temp_frames_pattern(state_manager.get_item('temp_path'), output_path, '%08d', state_manager.get_item('temp_frame_format')) + temp_frames_pattern = get_temp_frames_pattern(state_manager.get_item('temp_path'), output_path, state_manager.get_item('temp_frame_format'), '%08d') output_video_encoder = fix_video_encoder(temp_video_format, output_video_encoder) commands = ffmpeg_builder.chain( diff --git a/facefusion/temp_helper.py b/facefusion/temp_helper.py index d81cc045..fb71cb71 100644 --- a/facefusion/temp_helper.py +++ b/facefusion/temp_helper.py @@ -4,44 +4,44 @@ from typing import List from facefusion.filesystem import create_directory, get_file_extension, get_file_name, move_file, remove_directory, resolve_file_pattern -def get_temp_file_path(temp_path : str, file_path : str) -> str: - temp_directory_path = get_temp_directory_path(temp_path, file_path) - temp_file_extension = get_file_extension(file_path) +def get_temp_file_path(temp_path : str, output_path : str) -> str: + temp_directory_path = get_temp_directory_path(temp_path, output_path) + temp_file_extension = get_file_extension(output_path) return os.path.join(temp_directory_path, 'temp' + temp_file_extension) -def move_temp_file(temp_path : str, move_path : str) -> bool: - temp_file_path = get_temp_file_path(temp_path, move_path) - return move_file(temp_file_path, move_path) +def move_temp_file(temp_path : str, output_path : str) -> bool: + temp_file_path = get_temp_file_path(temp_path, output_path) + return move_file(temp_file_path, output_path) -def resolve_temp_frame_paths(temp_path : str, target_path : str, temp_frame_format : str) -> List[str]: - temp_frames_pattern = get_temp_frames_pattern(temp_path, target_path, '*', temp_frame_format) +def resolve_temp_frame_paths(temp_path : str, output_path : str, temp_frame_format : str) -> List[str]: + temp_frames_pattern = get_temp_frames_pattern(temp_path, output_path, temp_frame_format, '*') return resolve_file_pattern(temp_frames_pattern) -def get_temp_frames_pattern(temp_path : str, target_path : str, temp_frame_prefix : str, temp_frame_format : str) -> str: - temp_directory_path = get_temp_directory_path(temp_path, target_path) +def get_temp_frames_pattern(temp_path : str, output_path : str, temp_frame_format : str, temp_frame_prefix : str) -> str: + temp_directory_path = get_temp_directory_path(temp_path, output_path) return os.path.join(temp_directory_path, temp_frame_prefix + '.' + temp_frame_format) -def get_temp_directory_path(temp_path : str, file_path : str) -> str: - temp_file_name = get_file_name(file_path) +def get_temp_directory_path(temp_path : str, output_path : str) -> str: + temp_file_name = get_file_name(output_path) return os.path.join(temp_path, 'facefusion', temp_file_name) -def create_temp_directory(temp_path : str, file_path : str) -> bool: - temp_directory_path = get_temp_directory_path(temp_path, file_path) +def create_temp_directory(temp_path : str, output_path : str) -> bool: + temp_directory_path = get_temp_directory_path(temp_path, output_path) return create_directory(temp_directory_path) -def clear_temp_directory(temp_path : str, file_path : str) -> bool: - temp_directory_path = get_temp_directory_path(temp_path, file_path) +def clear_temp_directory(temp_path : str, output_path : str) -> bool: + temp_directory_path = get_temp_directory_path(temp_path, output_path) return remove_directory(temp_directory_path) -def get_temp_sequence_paths(temp_path : str, file_path : str, frame_total : int, temp_frame_prefix : str, temp_frame_format : str) -> List[str]: - temp_directory_path = get_temp_directory_path(temp_path, file_path) +def get_temp_sequence_paths(temp_path : str, output_path : str, temp_frame_format : str, temp_frame_prefix : str, frame_total : int) -> List[str]: + temp_directory_path = get_temp_directory_path(temp_path, output_path) temp_frame_paths = [] for frame_number in range(frame_total): diff --git a/facefusion/workflows/audio_to_image.py b/facefusion/workflows/audio_to_image.py index 0cc4ba3e..2c02da26 100644 --- a/facefusion/workflows/audio_to_image.py +++ b/facefusion/workflows/audio_to_image.py @@ -53,7 +53,7 @@ def process_image() -> ErrorCode: source_audio_path = get_first(filter_audio_paths(state_manager.get_item('source_paths'))) trim_frame_start, trim_frame_end = restrict_trim_audio_frame(source_audio_path, state_manager.get_item('output_video_fps'), state_manager.get_item('trim_frame_start'), state_manager.get_item('trim_frame_end')) audio_frame_total = trim_frame_end - trim_frame_start - temp_frame_paths = get_temp_sequence_paths(state_manager.get_item('temp_path'), state_manager.get_item('output_path'), audio_frame_total, '%08d', state_manager.get_item('temp_frame_format')) + temp_frame_paths = get_temp_sequence_paths(state_manager.get_item('temp_path'), state_manager.get_item('output_path'), state_manager.get_item('temp_frame_format'), '%08d', audio_frame_total) if temp_frame_paths: with tqdm(total = len(temp_frame_paths), desc = translator.get('processing'), unit = 'frame', ascii = ' =', disable = state_manager.get_item('log_level') in [ 'warn', 'error' ]) as progress: diff --git a/tests/test_temp_helper.py b/tests/test_temp_helper.py index ce9cb311..cbe39f2c 100644 --- a/tests/test_temp_helper.py +++ b/tests/test_temp_helper.py @@ -29,4 +29,4 @@ def test_get_temp_directory_path() -> None: def test_get_temp_frames_pattern() -> None: - assert get_temp_frames_pattern(state_manager.get_item('temp_path'), get_test_example_file('target-240p.mp4'), '%04d', state_manager.get_item('temp_frame_format')) == os.path.join(state_manager.get_item('temp_path'), 'facefusion', 'target-240p', '%04d.png') + assert get_temp_frames_pattern(state_manager.get_item('temp_path'), get_test_example_file('target-240p.mp4'), state_manager.get_item('temp_frame_format'), '%04d') == os.path.join(state_manager.get_item('temp_path'), 'facefusion', 'target-240p', '%04d.png')