【AI】动漫视频4倍清晰度批量提升
一、利用到的工具
1、github项目:https://github.com/xinntao/Real-ESRGAN/
2、ffmpeg
3、python批量处理脚本:放在本文最后面了
二、操作步骤
1、首先在自己电脑上安装ffmpeg,并讲ffmpeg添加到环境变量中
2、下载github项目,下载windows版
3、将我们的批量处理python脚本放到下载下来的github项目目录下
4、开始运行python脚本即可。
5、项目效果:
三、python脚本代码
点击查看代码
import os,re,time,subprocess,cv2,shutil
#为什么使用os.stytem,因为os.system是必须要执行完毕才会往后执行,我们这种流程化就需要这种
video_names=os.listdir("input_video")
print("所有需要处理的视频如下:")
print(video_names)
for video_name in video_names:
print("[+]开始处理视频:{}".format(video_name))
img_dic = 'tmp_img/' + video_name.rsplit(".")[0]+'/'
if not os.path.exists(img_dic): #目录不存在,则根据每个视频创建一个图片目录
print("[+]视频的图片目录不存在,开始创建目录")
os.mkdir(img_dic)
print("[-]目录创建成功!")
print("[+]开始分割视频为图片")
stat1 = os.system("ffmpeg -i input_video/{} -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 {}/frame%08d.png ".format(video_name,img_dic))
# print("stat1>>>{}".format(stat1))
print("[+]开始对原图片进行4倍清晰度提高处理...")
stat2 = os.system("realesrgan-ncnn-vulkan.exe -i {} -o {} -n RealESRGANv2-animevideo-xsx4 -s 4 -f png".format(img_dic,img_dic))
# print("stat2>>>{}".format(stat2))
print("[+]开始读取当前视频的帧速率...")
cap = cv2.VideoCapture('input_video/'+video_name) # 读取视频
frame_rate = cap.get(5) # 5代表:CV_CAP_PROP_FPS 是帧速率的意思
#下面是合并图片+复制声音,前提是上面的命令执行完毕
print("[+]开始将图片合并为视频,并且添加视频声音...")
# print(frame_rate)
print("ffmpeg -r {} -i {}frame%08d.png -i input_video/{} -map 0:v:0 -map 1:a:0 -c:a copy -c:v libx264 -r {} -pix_fmt yuv420p result_video/{}".format(frame_rate,img_dic,video_name,frame_rate,video_name))
stat3 = os.system("ffmpeg -r {} -i {}frame%08d.png -i input_video/{} -map 0:v:0 -map 1:a:0 -c:a copy -c:v libx264 -r {} -pix_fmt yuv420p result_video/{}".format(frame_rate,img_dic,video_name,frame_rate,video_name))
if stat3 == 0 :
print("[+]视频:{}处理完毕,开始删除产生的视频图片...".format(video_name))
shutil.rmtree(img_dic) #最后移除初始图片目录,节省空间,必须要用这个,如果用os.remove则失败,因为os.remove无法删除非空文件夹
print("[+]图片清理成功!")