mirror of
https://github.com/facefusion/facefusion.git
synced 2026-04-22 09:26:02 +02:00
Fix/ffmpeg sanitize (#1074)
* fix sanitize for videos * fix macos * fix macos
This commit is contained in:
@@ -339,11 +339,12 @@ def sanitize_image(media_chunk_reader : MediaChunkReader, asset_path : str) -> b
|
||||
|
||||
def sanitize_video(media_chunk_reader : MediaChunkReader, asset_path : str, security_strategy : ApiSecurityStrategy) -> bool:
|
||||
if security_strategy == 'strict':
|
||||
available_video_encoders = get_available_encoder_set().get('video')
|
||||
commands = ffmpeg_builder.chain(
|
||||
ffmpeg_builder.set_input('pipe:0'),
|
||||
ffmpeg_builder.set_video_encoder('libx264'), #todo - remove hard coded
|
||||
ffmpeg_builder.set_video_preset('libx264', 'ultrafast'), #todo - remove hard coded
|
||||
ffmpeg_builder.set_pixel_format('libx264'), #todo - remove hard coded
|
||||
ffmpeg_builder.set_video_encoder(available_video_encoders[0]),
|
||||
ffmpeg_builder.set_video_preset(available_video_encoders[0], 'ultrafast'),
|
||||
ffmpeg_builder.set_pixel_format(available_video_encoders[0]),
|
||||
ffmpeg_builder.deep_copy_video(),
|
||||
ffmpeg_builder.deep_copy_audio(),
|
||||
ffmpeg_builder.strip_metadata(),
|
||||
|
||||
+3
-12
@@ -1,13 +1,11 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
import facefusion.ffmpeg
|
||||
from facefusion import process_manager, state_manager
|
||||
from facefusion.common_helper import is_linux
|
||||
from facefusion.download import conditional_download
|
||||
from facefusion.ffmpeg import concat_video, extract_frames, merge_video, read_audio_buffer, replace_audio, restore_audio, sanitize_audio, sanitize_image, sanitize_video, spawn_frames
|
||||
from facefusion.ffprobe import probe_entries
|
||||
@@ -35,10 +33,7 @@ def before_all() -> None:
|
||||
subprocess.run([ 'ffmpeg', '-i', get_test_example_file('source.mp3'), '-i', get_test_example_file('target-240p.mp4'), '-ar', '16000', get_test_example_file('target-240p-16khz.' + output_video_format) ])
|
||||
|
||||
subprocess.run([ 'ffmpeg', '-i', get_test_example_file('source.mp3'), '-i', get_test_example_file('target-240p.mp4'), '-ar', '48000', get_test_example_file('target-240p-48khz.mp4') ])
|
||||
if sys.platform == 'darwin':
|
||||
subprocess.run([ 'ffmpeg', '-i', get_test_example_file('target-240p.mp4'), '-c:v', 'hevc_videotoolbox', '-an', get_test_example_file('target-240p-h265.mp4') ])
|
||||
else:
|
||||
subprocess.run([ 'ffmpeg', '-i', get_test_example_file('target-240p.mp4'), '-c:v', 'libx265', '-an', get_test_example_file('target-240p-h265.mp4') ])
|
||||
subprocess.run([ 'ffmpeg', '-i', get_test_example_file('target-240p.mp4'), '-c:v', 'libx265', '-an', '-movflags', '+faststart', get_test_example_file('target-240p-h265.mp4') ])
|
||||
state_manager.init_item('temp_path', tempfile.gettempdir())
|
||||
state_manager.init_item('temp_frame_format', 'png')
|
||||
state_manager.init_item('output_audio_encoder', 'aac')
|
||||
@@ -250,12 +245,8 @@ def test_sanitize_video() -> None:
|
||||
get_test_output_path('test-sanitize-video-moderate.mp4')
|
||||
]
|
||||
|
||||
if is_linux():
|
||||
assert sanitize_video(create_media_reader(file_path), output_paths[0], 'strict') is True
|
||||
assert probe_entries(output_paths[0], [ 'codec_name' ]).get('codec_name') == 'h264'
|
||||
else:
|
||||
#todo: fix this test under windows - might be just proper preparation of testfile, as we need moov at the beginning
|
||||
pytest.skip()
|
||||
assert sanitize_video(create_media_reader(file_path), output_paths[0], 'strict') is True
|
||||
assert probe_entries(output_paths[0], [ 'codec_name' ]).get('codec_name') == 'h264'
|
||||
|
||||
assert sanitize_video(create_media_reader(file_path), output_paths[1], 'moderate') is True
|
||||
assert probe_entries(output_paths[1], [ 'codec_name' ]).get('codec_name') == 'hevc'
|
||||
|
||||
Reference in New Issue
Block a user