File size: 1,637 Bytes
f368cb7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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