-
Notifications
You must be signed in to change notification settings - Fork 153
/
rife-2x.vpy
47 lines (38 loc) · 1.69 KB
/
rife-2x.vpy
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
38
39
40
41
42
43
44
45
46
47
### rife v2.3/v4 倍帧,默认以质量交换性能
import vapoursynth as vs
from vapoursynth import core
input = video_in
max_Leng = 720
scene_th = 0.1
rife_model = 9
GPU = 0
GPU_t = 2
pre_dscaling = False
# 若视频的短边超过该长度将被强制降采样,高端显卡的推荐值范围 1080 -- 720 (如果对你的显卡非常自信,可以尝试把该值提高到 2160)
# 场景切换的检测阈值,初始设置保守,设置为 0.2 可获得更明显的效果但引入更多瑕疵
# 补帧模型 5=v2.3 // 9=v4 无视性能要求,综合上讲 v2.3 胜于 v4 但计算压力远高于质量感知的差距
# 使用的显卡序号,0为排序一号
# 使用的显卡线程数
# 是否使用内部的预缩小提速计算过程(大幅降低 v2.3 的质量;不支持 v4 模型)
if container_fps > 32 :
raise Warning("源帧率超过限制的范围,已临时禁用该脚本。")
if input.width >= input.height :
short_edge = input.height
max_Leng2 = input.width*(max_Leng/input.height)
w_ds = max_Leng2
h_ds = max_Leng
else :
short_edge = input.width
max_Leng2 = input.height*(max_Leng/input.width)
w_ds = max_Leng
h_ds = max_Leng2
cut0 = core.misc.SCDetect(clip=input, threshold=scene_th)
if short_edge > max_Leng :
cut1 = cut0.resize.Bicubic(width=w_ds, height=h_ds, format=vs.RGBS, matrix_in_s="709")
else :
cut1 = cut0.resize.Bilinear(format=vs.RGBS, matrix_in_s="709")
cut2 = core.rife.RIFE(clip=cut1, model=rife_model, multiplier=2, gpu_id=GPU, gpu_thread=GPU_t, tta=False, uhd=pre_dscaling, sc=True)
output = cut2.resize.Bilinear(format=vs.YUV444P16, matrix_s="709")
if input.get_frame(0).props._ColorRange == 0 :
output = output.resize.Bilinear(range=1)
output.set_output()