SadTalker / modules /gfpgan_inference.py
vinthony's picture
init
a22eb82
raw
history blame
No virus
1.64 kB
import os,sys
def gfpgan(scale, origin_mp4_path):
current_code_path = sys.argv[0]
current_root_path = os.path.split(current_code_path)[0]
print(current_root_path)
gfpgan_code_path = current_root_path+'/repositories/GFPGAN/inference_gfpgan.py'
print(gfpgan_code_path)
#video2pic
result_dir = os.path.split(origin_mp4_path)[0]
video_name = os.path.split(origin_mp4_path)[1]
video_name = video_name.split('.')[0]
print(video_name)
str_scale = str(scale).replace('.', '_')
output_mp4_path = os.path.join(result_dir, video_name+'##'+str_scale+'.mp4')
temp_output_mp4_path = os.path.join(result_dir, 'temp_'+video_name+'##'+str_scale+'.mp4')
audio_name = video_name.split('##')[-1]
audio_path = os.path.join(result_dir, audio_name+'.wav')
temp_pic_dir1 = os.path.join(result_dir, video_name)
temp_pic_dir2 = os.path.join(result_dir, video_name+'##'+str_scale)
os.makedirs(temp_pic_dir1, exist_ok=True)
os.makedirs(temp_pic_dir2, exist_ok=True)
cmd1 = 'ffmpeg -i \"{}\" -start_number 0 \"{}\"/%06d.png -loglevel error -y'.format(origin_mp4_path, temp_pic_dir1)
os.system(cmd1)
cmd2 = f'python {gfpgan_code_path} -i {temp_pic_dir1} -o {temp_pic_dir2} -s {scale}'
os.system(cmd2)
cmd3 = f'ffmpeg -r 25 -f image2 -i {temp_pic_dir2}/%06d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p {temp_output_mp4_path}'
os.system(cmd3)
cmd4 = f'ffmpeg -y -i {temp_output_mp4_path} -i {audio_path} -vcodec copy {output_mp4_path}'
os.system(cmd4)
#shutil.rmtree(temp_pic_dir1)
#shutil.rmtree(temp_pic_dir2)
return output_mp4_path