import os import shutil import gradio as gr from PIL import Image import subprocess #os.chdir('Restormer') examples = [['project/cartoon2.jpg','project/video1.mp4'], ['project/cartoon3.jpg','project/video2.mp4'], ['project/celeb1.jpg','project/video1.mp4'], ['project/celeb2.jpg','project/video2.mp4'], ] title = "DaGAN" description = """ Gradio demo for Depth-Aware Generative Adversarial Network for Talking Head Video Generation, CVPR 2022. [Paper][Github Code]\n Read more at the links below. Upload a video file (cropped to face), a facial image and have fun :D. Please note that your video will be trimmed to first 8 seconds. """ ##With Restormer, you can perform: (1) Image Denoising, (2) Defocus Deblurring, (3) Motion Deblurring, and (4) Image Deraining. ##To use it, simply upload your own image, or click one of the examples provided below. article = "

Depth-Aware Generative Adversarial Network for Talking Head Video Generation | Github Repo

" def inference(img, video): if not os.path.exists('temp'): os.system('mkdir temp') # trim video to 8 seconds cmd = f"ffmpeg -y -ss 00:00:00 -i {video} -to 00:00:08 -c copy video_input.mp4" subprocess.run(cmd.split()) video = "video_input.mp4" #### Resize the longer edge of the input image # os.system("ffmpeg -y -ss 00:00:00 -i {video} -to 00:00:08 -c copy temp/driving_video.mp4") # driving_video = "video_input.mp4" os.system("python demo_dagan.py --source_image {} --driving_video {} --output 'temp/rst.mp4'".format(img,video)) return f'temp/rst.mp4' gr.Interface( inference, [ gr.inputs.Image(type="filepath", label="Source Image"), gr.inputs.Video(type='mp4',label="Driving Video"), ], gr.outputs.Video(type="mp4", label="Output Video"), title=title, description=description, article=article, theme ="huggingface", examples=examples, allow_flagging=False, ).launch(debug=False,enable_queue=True)