dreamtalk / app.py
fffiloni's picture
Update app.py
db305d2
raw
history blame
2.18 kB
import gradio as gr
import subprocess
import imageio
import imageio_ffmpeg
def convert_video(input_file, output_file, format='mp4', codec='libx264'):
try:
# Define input and output files
input_path = input_file
output_path = output_file + '.' + format
# Read video file
reader = imageio.get_reader(input_path)
# Configure FFmpeg parameters
ffmpeg_params = ['-vcodec', codec]
# Get writer for output video file with specified codec
writer = imageio.get_writer(output_path, format=format, ffmpeg_params=ffmpeg_params, plugin='imageio_ffmpeg')
# Iterate through video frames and write to output file
for frame in reader:
writer.append_data(frame)
# Close writer
writer.close()
print(f"Video converted successfully: {output_path}")
except Exception as e:
print(f"Error converting video: {e}")
def execute_command(command: str) -> None:
subprocess.run(command, check=True)
def infer():
output_name = "acknowledgement_english@M030_front_neutral_level1_001@male_face"
command = [
f"python",
f"inference_for_demo_video.py",
f"--wav_path=data/audio/acknowledgement_english.m4a",
f"--style_clip_path=data/style_clip/3DMM/M030_front_neutral_level1_001.mat",
f"--pose_path=data/pose/RichardShelby_front_neutral_level1_001.mat",
f"--image_path=data/src_img/uncropped/male_face.png",
f"--cfg_scale=1.0",
f"--max_gen_len=30",
f"--output_name={output_name}"
]
execute_command(command)
# Convert video to compatible codecs
input_file_path = f"output_video/{output_name}.mp4"
output_file_path = f"{output_name}"
convert_video(input_file_path, output_file_path)
return f"{output_file_path}.mp4"
with gr.Blocks() as demo:
with gr.Column():
with gr.Row():
with gr.Column():
run_btn = gr.Button("Run")
with gr.Column():
output_video = gr.Video()
run_btn.click(
fn = infer,
inputs = [],
outputs = [output_video]
)
demo.launch()