From aa1007ff6aed5c173dca872cb763275734b0c95b Mon Sep 17 00:00:00 2001 From: henryruhs Date: Wed, 12 Feb 2025 22:54:21 +0100 Subject: [PATCH] Fix blank screen in replace_audio() --- facefusion/ffmpeg.py | 5 +++-- tests/test_ffmpeg.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/facefusion/ffmpeg.py b/facefusion/ffmpeg.py index 7979083..928bc32 100644 --- a/facefusion/ffmpeg.py +++ b/facefusion/ffmpeg.py @@ -169,10 +169,10 @@ def restore_audio(target_path : str, output_path : str, trim_frame_start : int, ffmpeg_builder.set_input(temp_file_path), ffmpeg_builder.select_media_range(trim_frame_start, trim_frame_end, target_video_fps), ffmpeg_builder.set_input(target_path), - ffmpeg_builder.set_video_encoder(output_video_encoder), ffmpeg_builder.set_audio_encoder(output_audio_encoder), ffmpeg_builder.set_audio_quality(output_audio_encoder, output_audio_quality), ffmpeg_builder.set_audio_volume(output_audio_volume), + ffmpeg_builder.set_video_encoder(output_video_encoder), ffmpeg_builder.select_media_stream('0:v:0'), ffmpeg_builder.select_media_stream('1:a:0'), ffmpeg_builder.set_video_duration(temp_video_duration), @@ -185,16 +185,17 @@ def replace_audio(target_path : str, audio_path : str, output_path : str) -> boo output_audio_encoder = state_manager.get_item('output_audio_encoder') output_audio_quality = state_manager.get_item('output_audio_quality') output_audio_volume = state_manager.get_item('output_audio_volume') + output_video_encoder = state_manager.get_item('output_video_encoder') temp_file_path = get_temp_file_path(target_path) temp_video_duration = detect_video_duration(temp_file_path) commands = ffmpeg_builder.chain( ffmpeg_builder.set_input(temp_file_path), ffmpeg_builder.set_input(audio_path), - ffmpeg_builder.copy_video_encoder(), ffmpeg_builder.set_audio_encoder(output_audio_encoder), ffmpeg_builder.set_audio_quality(output_audio_encoder, output_audio_quality), ffmpeg_builder.set_audio_volume(output_audio_volume), + ffmpeg_builder.set_video_encoder(output_video_encoder), ffmpeg_builder.set_video_duration(temp_video_duration), ffmpeg_builder.force_output(output_path) ) diff --git a/tests/test_ffmpeg.py b/tests/test_ffmpeg.py index 814b08e..d75c3c8 100644 --- a/tests/test_ffmpeg.py +++ b/tests/test_ffmpeg.py @@ -31,6 +31,7 @@ def before_all() -> None: state_manager.init_item('output_audio_encoder', 'aac') state_manager.init_item('output_audio_quality', 80) state_manager.init_item('output_audio_volume', 100) + state_manager.init_item('output_video_encoder', 'libx264') @pytest.fixture(scope = 'function', autouse = True)