mirror of
https://github.com/facefusion/facefusion.git
synced 2026-10-13 17:17:30 +02:00
Part 2
This commit is contained in:
1 parent
cec736d03a
commit
0aa56d54bb
7 files changed
+15
-17
No files matched your search
@@ -28,7 +28,7 @@ def graceful_exit(error_code : ErrorCode) -> None:
|
|||||||
while process_manager.is_processing():
|
while process_manager.is_processing():
|
||||||
sleep(0.5)
|
sleep(0.5)
|
||||||
|
|
||||||
if state_manager.get_item('output_path'):
|
if state_manager.get_item('output_path') and not state_manager.get_item('keep_temp'):
|
||||||
clear_temp_directory(state_manager.get_item('output_path'), state_manager.get_item('temp_path'))
|
clear_temp_directory(state_manager.get_item('output_path'), state_manager.get_item('temp_path'))
|
||||||
|
|
||||||
hard_exit(error_code)
|
hard_exit(error_code)
|
||||||
@@ -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:
|
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)
|
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(output_path, '%08d', state_manager.get_item('temp_path'))
|
temp_frames_pattern = get_temp_frames_pattern(output_path, '%08d', state_manager.get_item('temp_path'), state_manager.get_item('temp_frame_format'))
|
||||||
commands = ffmpeg_builder.chain(
|
commands = ffmpeg_builder.chain(
|
||||||
ffmpeg_builder.set_input(target_path),
|
ffmpeg_builder.set_input(target_path),
|
||||||
ffmpeg_builder.set_media_resolution(pack_resolution(temp_video_resolution)),
|
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)
|
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(output_path, state_manager.get_item('temp_path'))
|
temp_video_path = get_temp_file_path(output_path, state_manager.get_item('temp_path'))
|
||||||
temp_video_format = cast(VideoFormat, get_file_format(output_path))
|
temp_video_format = cast(VideoFormat, get_file_format(output_path))
|
||||||
temp_frames_pattern = get_temp_frames_pattern(output_path, '%08d', state_manager.get_item('temp_path'))
|
temp_frames_pattern = get_temp_frames_pattern(output_path, '%08d', state_manager.get_item('temp_path'), state_manager.get_item('temp_frame_format'))
|
||||||
|
|
||||||
output_video_encoder = fix_video_encoder(temp_video_format, output_video_encoder)
|
output_video_encoder = fix_video_encoder(temp_video_format, output_video_encoder)
|
||||||
commands = ffmpeg_builder.chain(
|
commands = ffmpeg_builder.chain(
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from facefusion import state_manager
|
|
||||||
from facefusion.filesystem import create_directory, get_file_extension, get_file_name, move_file, remove_directory, resolve_file_pattern
|
from facefusion.filesystem import create_directory, get_file_extension, get_file_name, move_file, remove_directory, resolve_file_pattern
|
||||||
|
|
||||||
|
|
||||||
@@ -16,14 +15,14 @@ def move_temp_file(move_path : str, temp_path : str) -> bool:
|
|||||||
return move_file(temp_file_path, move_path)
|
return move_file(temp_file_path, move_path)
|
||||||
|
|
||||||
|
|
||||||
def resolve_temp_frame_paths(target_path : str, temp_path : str) -> List[str]:
|
def resolve_temp_frame_paths(target_path : str, temp_path : str, temp_frame_format : str) -> List[str]:
|
||||||
temp_frames_pattern = get_temp_frames_pattern(target_path, '*', temp_path)
|
temp_frames_pattern = get_temp_frames_pattern(target_path, '*', temp_path, temp_frame_format)
|
||||||
return resolve_file_pattern(temp_frames_pattern)
|
return resolve_file_pattern(temp_frames_pattern)
|
||||||
|
|
||||||
|
|
||||||
def get_temp_frames_pattern(target_path : str, temp_frame_prefix : str, temp_path : str) -> str:
|
def get_temp_frames_pattern(target_path : str, temp_frame_prefix : str, temp_path : str, temp_frame_format : str) -> str:
|
||||||
temp_directory_path = get_temp_directory_path(target_path, temp_path)
|
temp_directory_path = get_temp_directory_path(target_path, temp_path)
|
||||||
return os.path.join(temp_directory_path, temp_frame_prefix + '.' + state_manager.get_item('temp_frame_format')) # TODO: remove state_manager.get
|
return os.path.join(temp_directory_path, temp_frame_prefix + '.' + temp_frame_format)
|
||||||
|
|
||||||
|
|
||||||
def get_temp_directory_path(file_path : str, temp_path : str) -> str:
|
def get_temp_directory_path(file_path : str, temp_path : str) -> str:
|
||||||
@@ -37,10 +36,8 @@ def create_temp_directory(file_path : str, temp_path : str) -> bool:
|
|||||||
|
|
||||||
|
|
||||||
def clear_temp_directory(file_path : str, temp_path : str) -> bool:
|
def clear_temp_directory(file_path : str, temp_path : str) -> bool:
|
||||||
if not state_manager.get_item('keep_temp'): # TODO: remove state_manager.get
|
temp_directory_path = get_temp_directory_path(file_path, temp_path)
|
||||||
temp_directory_path = get_temp_directory_path(file_path, temp_path)
|
return remove_directory(temp_directory_path)
|
||||||
return remove_directory(temp_directory_path)
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def get_temp_sequence_paths(file_path : str, frame_total : int, temp_frame_prefix : str, temp_frame_format : str, temp_path : str) -> List[str]:
|
def get_temp_sequence_paths(file_path : str, frame_total : int, temp_frame_prefix : str, temp_frame_format : str, temp_path : str) -> List[str]:
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ def setup() -> ErrorCode:
|
|||||||
|
|
||||||
|
|
||||||
def clear() -> ErrorCode:
|
def clear() -> ErrorCode:
|
||||||
clear_temp_directory(state_manager.get_item('output_path'), state_manager.get_item('temp_path'))
|
if not state_manager.get_item('keep_temp'):
|
||||||
logger.debug(translator.get('clearing_temp'), __name__)
|
clear_temp_directory(state_manager.get_item('output_path'), state_manager.get_item('temp_path'))
|
||||||
|
logger.debug(translator.get('clearing_temp'), __name__)
|
||||||
return 0
|
return 0
|
||||||
@@ -69,7 +69,7 @@ def extract_frames() -> ErrorCode:
|
|||||||
|
|
||||||
|
|
||||||
def process_video() -> ErrorCode:
|
def process_video() -> ErrorCode:
|
||||||
temp_frame_paths = resolve_temp_frame_paths(state_manager.get_item('output_path'), state_manager.get_item('temp_path'))
|
temp_frame_paths = resolve_temp_frame_paths(state_manager.get_item('output_path'), state_manager.get_item('temp_path'), state_manager.get_item('temp_frame_format'))
|
||||||
|
|
||||||
if temp_frame_paths:
|
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:
|
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:
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ def test_extract_frames() -> None:
|
|||||||
create_temp_directory(output_path, state_manager.get_item('temp_path'))
|
create_temp_directory(output_path, state_manager.get_item('temp_path'))
|
||||||
|
|
||||||
assert extract_frames(target_path, output_path, (452, 240), 30.0, trim_frame_start, trim_frame_end) is True
|
assert extract_frames(target_path, output_path, (452, 240), 30.0, trim_frame_start, trim_frame_end) is True
|
||||||
assert len(resolve_temp_frame_paths(output_path, state_manager.get_item('temp_path'))) == frame_total
|
assert len(resolve_temp_frame_paths(output_path, state_manager.get_item('temp_path'), state_manager.get_item('temp_frame_format'))) == frame_total
|
||||||
|
|
||||||
clear_temp_directory(output_path, state_manager.get_item('temp_path'))
|
clear_temp_directory(output_path, state_manager.get_item('temp_path'))
|
||||||
|
|
||||||
|
|||||||
@@ -29,4 +29,4 @@ def test_get_temp_directory_path() -> None:
|
|||||||
|
|
||||||
|
|
||||||
def test_get_temp_frames_pattern() -> None:
|
def test_get_temp_frames_pattern() -> None:
|
||||||
assert get_temp_frames_pattern(get_test_example_file('target-240p.mp4'), '%04d', state_manager.get_item('temp_path')) == os.path.join(state_manager.get_item('temp_path'), 'facefusion', 'target-240p', '%04d.png')
|
assert get_temp_frames_pattern(get_test_example_file('target-240p.mp4'), '%04d', state_manager.get_item('temp_path'), state_manager.get_item('temp_frame_format')) == os.path.join(state_manager.get_item('temp_path'), 'facefusion', 'target-240p', '%04d.png')
|
||||||
Reference in new issue
Block a user