|
from gradio.processing_utils import video_is_playable |
|
|
|
from facefusion import ffmpeg_builder |
|
from facefusion.ffmpeg import run_ffmpeg |
|
from facefusion.filesystem import get_file_size |
|
from facefusion.temp_helper import create_temp_directory, get_temp_file_path |
|
|
|
|
|
def convert_video_to_playable_mp4(video_path : str) -> str: |
|
video_file_size = get_file_size(video_path) |
|
max_file_size = 512 * 1024 * 1024 |
|
|
|
if video_file_size > max_file_size: |
|
create_temp_directory(video_path) |
|
temp_video_path = get_temp_file_path(video_path) |
|
commands = ffmpeg_builder.chain( |
|
ffmpeg_builder.set_input(video_path), |
|
ffmpeg_builder.set_video_duration(10), |
|
ffmpeg_builder.force_output(temp_video_path) |
|
) |
|
|
|
process = run_ffmpeg(commands) |
|
process.communicate() |
|
|
|
if process.returncode == 0: |
|
return temp_video_path |
|
|
|
if not video_is_playable(video_path): |
|
create_temp_directory(video_path) |
|
temp_video_path = get_temp_file_path(video_path) |
|
commands = ffmpeg_builder.chain( |
|
ffmpeg_builder.set_input(video_path), |
|
ffmpeg_builder.force_output(temp_video_path) |
|
) |
|
|
|
process = run_ffmpeg(commands) |
|
process.communicate() |
|
|
|
if process.returncode == 0: |
|
return temp_video_path |
|
|
|
return video_path |
|
|
|
|
|
def check_allowed(path : str, check_in_upload_folder : bool) -> None: |
|
return None |
|
|