Spaces:
Runtime error
Runtime error
File size: 2,576 Bytes
1cd3497 3f4e0ec 537ba12 79883d7 537ba12 79883d7 3f4e0ec 537ba12 3f4e0ec 537ba12 3f4e0ec 537ba12 3f4e0ec 537ba12 3f4e0ec 79883d7 537ba12 79883d7 1cd3497 30dd27d 1cd3497 79883d7 fed1557 79883d7 fed1557 1cd3497 9b98523 1cd3497 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import gradio as gr
import subprocess
import cv2
import ffmpeg
def convert_video(input_file, output_file, codec='libx264'):
try:
# Define input and output files
input_path = input_file
output_path = output_file
# Read input video file
cap = cv2.VideoCapture(input_path)
# Get video codec and frame dimensions
fourcc = cv2.VideoWriter_fourcc(*codec)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
# Create output video writer
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
# Process and write video frames
while cap.isOpened():
ret, frame = cap.read()
if ret:
out.write(frame)
else:
break
# Release video objects
cap.release()
out.release()
# Process and write audio stream using ffmpeg
stream = ffmpeg.input(input_path)
stream = ffmpeg.output(stream, output_path, acodec='aac', vcodec=codec, strict='experimental', loglevel='error')
ffmpeg.run(stream)
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}.mp4"
convert_video(input_file_path, output_file_path)
return f"{output_file_path}"
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() |