|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
return output_mp4_path |
|
|