-
Notifications
You must be signed in to change notification settings - Fork 222
3_K7sfunc
模块化各vs滤镜 ——
简化脚本内调用的方式,降低仓库内已公开的vapoursynth滤镜的使用门槛;
便于在单个vpy脚本中快速合并多个效果,减少串联多个vf产生的多余性能损失。
大致分为五个组:“格式控制” “超分” “运动补偿” “降噪” “其它”
每组可用的具体模块说明跳转后方的详细介绍。
k7sfunc.py 为常规的python脚本,下载后放入python path即可被自动读取。(以mpv-lazy的预设方式,放在 python.exe 同路径下即可)
执行完此步骤即视为“安装完毕”。
示例如下 ——
import vapoursynth as vs
from vapoursynth import core
from k7sfunc import *
step01 = video_in
step02 = FMT_CTRL(input=step01, fmt_pix=vs.YUV420P8)
step03 = MVT_LQ(input=step02, fps_in=container_fps, fps_out=display_fps)
step03.set_output()前两行为固定内容。第三行为导入K7sfunc的所有模块,如果你只想导入指定的模块,则此处改写为(示例):
from k7sfunc import FMT_CTRL, MVT_LQ第四行将 video_in (这是由mpv提供的)即视频,赋值给自己定义的变量 step01 ;
第五行使用模块 FMT_CTRL (这是由K7sfunc导入的),处理 step01 ,转换为常规的8位视频,并将结果赋值给 step02 ;
第六行使用另一个模块 MVT_LQ (这也是由K7sfunc导入的),处理 step02 , container_fps display_fps (也都是由mpv提供的)分别表示源帧率和显示刷新率,即补帧到显示器的等值帧率,并将结果赋值给 step03 ;
最后一行即输出 step03 ,如果无误,即正常输出补帧后的视频。
TIPS:
在向模块内传递参数的时候,可以省略为(示例):
step03 = MVT_LQ(step02, container_fps, display_fps)简略的前提是顺序要和模块内一一对应,也可以简略和完整混合,即:
step03 = MVT_LQ(step02, fps_in=container_fps, fps_out=display_fps)为了进一步方便,会使用同名变量不断更新赋值,即:
import vapoursynth as vs
from vapoursynth import core
from k7sfunc import *
clip = video_in
clip = FMT_CTRL(clip, fmt_pix=vs.YUV420P8)
clip = MVT_LQ(clip, fps_in=container_fps, fps_out=display_fps)
clip.set_output()对应版本 0.0.5
带 NV 后缀的为nvidia显卡专用。各模块的 input 都是必填项,其它见各自的介绍。示例即默认值。
FMT_CTRL(input=clip, h_max=None, h_ret=False, fmt_pix=None)
用于检测或限制尺寸、像素格式。
-
h_max(可选)整数值。如果填写则表示检测的最大高度 -
h_ret当为True时,中断后续执行。否则转换输入源到h_max指定的高度 -
fmt_pix(可选)填写vs的像素格式,例如 vs.YUV420P8。如果填写则转换输入源到指定的格式
P.S. 还可以简易的使用 FMT_CTRL(input=clip) 来只确保输入源限制在YUV10位内
FPS_CHANGE(input=clip, fps_in=24.0, fps_out=60.0)
用于转换帧率(不支持VFR)。
-
fps_in浮点值。指定输入源的帧率 -
fps_out浮点值。指定输出的帧率
FPS_CTRL(input=clip, fps_in=23.976, fps_max=32.0, fps_out=None, fps_ret=False)
用于检测或限制帧率。
-
fps_in浮点值。指定输入源的帧率 -
fps_max浮点值。指定检测的最大帧率 -
fps_out(可选)浮点值 -
fps_ret(可选)浮点值。当为True时,中断后续执行。否则转换输入源到fps_out指定的帧率,如果fps_out未填写则使用fps_max的值
ACNET_STD(input=clip, nr=1, nr_lv=1, gpu=0, gpu_m="opencl")
固定放大两倍,附带降噪(只适合Anime风格)。
-
nr<0|1> 是否降噪,0为禁用 -
nr_lv<1|2|3> 降噪强度 -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_m<"opencl"|"cuda"> 选择其中一种显卡加速模式
CUGAN_NV(input=clip, lt_hd=False, nr_lv=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)
固定放大两倍,附带降噪(只适合Anime风格)。
-
lt_hd是否对超过HD分辨率(720P)的源进行处理 -
nr_lv<-1|0|3> 降噪强度,-1为不降噪 -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数 -
st_eng是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) -
ws_size大于0的整数。约束显存(MiB),静态引擎的最小值为128(动态引擎自动双倍),设为低于此数的值即为不限制
ESRGAN_NV(input=clip, lt_hd=False, scale=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)
固定放大整数倍(只适合Anime风格)。
-
lt_hd是否对超过HD分辨率(720P)的源进行处理 -
scale<1|2> 放大倍率,1为不放大 -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数 -
st_eng是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) -
ws_size大于0的整数。约束显存(MiB),静态引擎的最小值为128(动态引擎自动双倍),设为低于此数的值即为不限制
NNEDI3_STD(input=clip, edi_nsize=4, edi_nns=3, cpu=True, gpu=-1)
固定放大两倍。
-
edi_nsize<0|4> 分别对应 8x6 8x4 -
edi_nns<2|3|4> 分别对应 64 128 256 -
cpu使用cpu还是gpu -
gpu<-1|0|1|2> 指定显卡,0为排序一号,-1为自动
WAIFU_NV(input=clip, lt_hd=False, nr_lv=1, scale=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)
固定放大整数倍(只适合Anime风格)。
-
lt_hd是否对超过HD分辨率(720P)的源进行处理 -
nr_lv<-1|0|1|2|3> 降噪强度,-1为不降噪 -
scale<1|2|3|4> 放大倍率,1为不放大 -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数 -
st_eng是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) -
ws_size大于0的整数。约束显存(MiB),静态引擎的最小值为128(动态引擎自动双倍),设为低于此数的值即为不限制
MVT_LQ(input=clip, fps_in=23.976, fps_out=59.940, recal=True, block=True)
补帧至任意帧率(不支持VFR)。
-
fps_in浮点值。指定输入源的帧率 -
fps_out浮点值。指定输出帧率 -
recal是否使用二次分析 -
block是否使用Block模式
MVT_STD(input=clip, fps_in=23.976, fps_out=59.940)
补帧至任意帧率(不支持VFR)。
-
fps_in浮点值。指定输入源的帧率 -
fps_out浮点值。指定输出帧率
MVT_POT(input=clip, fps_in=23.976, fps_out=59.940)
补帧至任意帧率(不支持VFR)。
-
fps_in浮点值。指定输入源的帧率 -
fps_out浮点值。指定输出帧率
RIFE_STD(input=clip, sc_mode=1, stat_th=60.0, fps_num=2, fps_den=1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)
补帧至任意倍率。
-
sc_mode<0|1|2> 场景切换检测的模式,0为禁用 -
stat_th浮点值。静止帧的检测阈值,不对该类帧进行补偿计算 -
fps_num整数 -
fps_den整数。fps_num/fps_den 的值即帧率倍数(计算结果可为浮点) -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数
RIFE_NV(input=clip, lt_d2k=False, sc_mode=1, fps_num=2, t_tta=False, ext_proc=True, gpu=0, gpu_t=2)
补帧至固定整数倍。
-
lt_d2k是否对超过DCI2K分辨率的源进行补帧 -
sc_mode<0|1|2> 场景切换检测的模式,0为禁用 -
fps_num<2|3|4> 补帧倍率 -
t_tta是否使用ensemble版模型 -
ext_proc是否使用外部的填充裁切处理(禁用将强制锁定为静态引擎) -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数 -
st_eng是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(QVGA→DCI4K) -
ws_size大于0的整数。约束显存(MiB),静态引擎的最小值为128(动态引擎自动双倍),设为低于此数的值即为不限制
BM3D_NV(input=clip, nr_lv=[5,1,1], bs_ref=8, bs_out=7, gpu=0)
降噪。
-
nr_lv整数组。每平面的降噪强度 -
bs_ref<1|2|3|4|5|6|7|8> 参考帧的block_step -
bs_out<1|2|3|4|5|6|7|8> 处理帧的block_step,应小于 bs_ref 的值 -
gpu<0|1|2> 指定显卡,0为排序一号
CCD_STD(input=clip, nr_lv=20.0)
降低彩噪。
-
nr_lv浮点值。降噪强度
FFT3D_STD(input=clip, mode=1, nr_lv=2.0, plane=[0], frame_bk=3, cpu_t=6)
降噪。
-
mode<1|2> fft3d内核,分别对应 FFT3DFilter Neo-FFT3D -
nr_lv浮点值。降噪强度 -
plane整数组。降噪处理的平面,全平面即[0, 1, 2] -
frame_bk<-1|0|1|2|3|4|5> -1=仅锐化和去光晕 // 0=Temporal Kalman // 1=2D (spatial) Wiener // 2 --- 5 =N帧的3D Wiener -
cpu_t整数。使用的处理器线程
NLM_STD(input=clip, blur_m=2, nlm_m=1, frame_num=1, rad_sw=2, rad_snw=2, nr_lv=3.0, gpu=0)
降噪。
-
blur_m<0|1|2> 分离模式。0为不使用 -
nlm_m<1|2> 降噪核心,分别对应 OpenCL cpu -
frame_num整数。降噪帧数 -
rad_sw整数。搜索窗口半径 -
rad_snw整数。近邻窗口半径 -
nr_lv浮点值。降噪强度 -
gpu<0|1|2> 指定显卡,0为排序一号
NLM_NV(input=clip, blur_m=2, frame_num=1, rad_sw=2, rad_snw=2, nr_lv=3.0, gpu=0, gpu_t=2)
降噪。
-
blur_m<0|1|2> 分离模式。0为不使用 -
frame_num整数。降噪帧数 -
rad_sw整数。搜索窗口半径 -
rad_snw整数。近邻窗口半径 -
nr_lv浮点值。降噪强度 -
gpu<0|1|2> 指定显卡,0为排序一号 -
gpu_t<1|2|3> 指定显卡线程数
AA_NV(input=clip, plane=[0], gpu=-1, gpu_t=2)
抗锯齿。(存在问题:不能跳转,不可撤销。)
-
plane整数组。抗锯齿处理的平面,全平面即[0, 1, 2] -
gpu<-1|0|1|2> 指定显卡,0为排序一号,-1为自动 -
gpu_t<1|2|3> 指定显卡线程数
DEBAND_STD(input=clip, bd_range=15, bdy_rth=48, bdc_rth=48, grainy=48, grainc=48, spl_m=4, grain_dy=True, depth=8)
去色带。
-
bd_range整数。色带检测范围 -
bdy_rth整数。色带检测阈值 —— Y平面 -
bdc_rth整数。色带检测阈值 —— CbCr平面 -
grainy整数。最后阶段添加的颗粒数 —— Y平面 -
grainc整数。最后阶段添加的颗粒数 —— CbCr平面 -
spl_m<1|2|3|4> 采样模式,分别对应 Column Square Row Average(Column&Row) -
grain_dy是否使用动态颗粒 -
depth<8|10> 最终输出的色深
DEINT_STD(input=clip, cpu=True, gpu=-1, deint_m=1)
反交错。
-
cpu使用cpu还是gpu -
gpu<-1|0|1|2> 指定显卡,0为排序一号,-1为自动 -
deint_m<1|2|3> 去隔行的执行核心,分别对应 bwdif yadifmod tdm
IVTC_STD(input=clip, fps_in=23.976, ivtc_m=1)
反转错误的帧率变换(仅限25/30帧)。
-
fps_in浮点值。指定输入源的帧率 -
ivtc_m<1|2> ivtc模式
STAB_STD(input=clip)
镜头防抖
STAB_HQ(input=clip)
镜头防抖