Skip to content

3_K7sfunc

Karl Hook edited this page Aug 24, 2024 · 106 revisions

K7SFUNC

为mpv特向优化的vs包装器

  • 主要特点

模块化各vs滤镜 ——
简化脚本内调用的方式,降低仓库内已公开的vapoursynth滤镜的使用门槛;
便于在单个vpy脚本中快速合并多个效果,减少串联多个vf产生的多余性能损失。

  • 可用模块

大致分为五个组:“格式控制” “超分”(SR) “运动补偿”(MEMC) “降噪”(NR) “其它”(ETC)。
每组可用的具体模块说明跳转后方的 👉 详细介绍

1. 使用引导

(1) 安装前置环境 Python + VapourSynth ,此步骤的教程可参考 mpv通用教程(#vapoursynth) / mpv通用教程补充 / 从零部署
从此处下载快速部署包后解压至mpv.exe的路径 https://github.com/hooke007/dotfiles/releases/tag/mpv_addones
(使用 mpv-lazy 可跳过此步)

(2) k7sfunc.py 为常规的python脚本,下载后放入python path即可被自动读取。(以mpv-lazy的预设方式,放在 python.exe 同路径下即可)
执行完此步骤即视为“安装完毕”。
(使用 mpv-lazy 可跳过此步)

(3) 依据自己要使用的模块下载对应的依赖,此步骤的教程可参考步骤1
(使用 mpv-lazy 则可直接下载release页面的 vsAMD/vsNV 包)

(4) 根据此包装器编写自己的滤镜组合脚本,然后通过mpv的 vf=vapoursynth="X/path/to/test.vpy" 启用它
(优先推荐使用快捷键开关 vf toggle vapoursynth="X/path/to/test.vpy" )。

1.1. 创建自定义vpy脚本

简单认识vpy脚本的结构,它大致分为三个部分:(首)导入模块 → (主体)对待处理的对象执行各种操作 → (尾)输出结果

示例如下 ——

## 开头部分
import vapoursynth as vs                                                   # 行1
from vapoursynth import core                                               # 行2
from k7sfunc import *                                                      # 行3
## 主体部分
step01 = video_in                                                          # 行4
step02 = FMT_CTRL(input=step01, fmt_pix=1)                                 # 行5
step03 = MVT_LQ(input=step02, fps_in=container_fps, fps_out=display_fps)   # 行6
## 结尾部分
step03.set_output()                                                        # 行7
  • 第1、2行: 几乎所有vpy脚本的开头固定内容(如果你只使用K7sfunc模块内的功能,这甚至可以不写)。
  • 第3行: 导入K7sfunc的所有模块,如果你只想导入指定的模块,则此处改写为(示例):
    from k7sfunc import FMT_CTRL, MVT_LQ
  • 第4行: 将 video_in (这是由mpv提供的)即视频,赋值给自己定义的变量 step01 ;
  • 第5行: 使用模块 FMT_CTRL (这是由K7sfunc导入的),处理 step01 ,转换为常规的8位视频,并将结果赋值给 step02 ;
  • 第6行: 使用另一个模块 MVT_LQ (这也是由K7sfunc导入的),处理 step02container_fps display_fps (也都是由mpv提供的)分别表示源帧率和显示刷新率,即补帧到显示器的等值帧率,并将结果赋值给 step03 ;
  • 第7行: 即输出 step03 ,如果无误,即正常输出补帧后的视频。输出内容也通常是vpy脚本的最后固定内容

Tip

使用完整写法的参数可以改变顺序,即:

step03 = MVT_LQ(step02, fps_out=display_fps, fps_in=container_fps)

Tip

在向模块内传递参数的时候,可以省略为(第6行的示例):

step03 = MVT_LQ(step02, container_fps, display_fps)

(重要):简略的前提是顺序要和模块内一一对应,也可以简略和完整混合,即:

step03 = MVT_LQ(step02, fps_in=container_fps, fps_out=display_fps)

Important

从减少命名冲突的角度出发,使用另一种“安全方法”导入更好(第3行的示例),不过会影响后续的写法:

import k7sfunc as k7f

👉 如果你使用了“安全方法”进行导入,模块名在使用的时候要修改(第6行的示例):

step03 = k7f.MVT_LQ(input=step02, fps_in=container_fps, fps_out=display_fps)

Tip

为了进一步方便,会使用同名变量不断更新赋值,即:

import vapoursynth as vs
from vapoursynth import core
from k7sfunc import *
clip = video_in
clip = FMT_CTRL(clip, fmt_pix=1)
clip = MVT_LQ(clip, fps_in=container_fps, fps_out=display_fps)
clip.set_output()

扩展阅读 《vpy的设计与优化思路》

更多示例(如果你不具备相关知识或不熟悉上文,则不建议)参考 仓库内的vpy脚本

2. 模块说明

对应的正式版本 0.6.1
带有 “开发版” 字样的模块/参数表示仅在 main 分支下的开发版本可用

  • _NV 后缀的模块为nvidia RTX显卡专用。

  • 各模块的头部代码块表示的是该模块内各个参数的默认值。表格内第二列为各个参数的可用值。

  • 各模块的参数 input 都是必填项,它的值是由你定义的待处理的片段,其它见各自的介绍。示例即默认值。
    各模块的末尾参数 vs_t 是特殊项,表示该模块使用的vs线程数量(如无特殊需求就不要设置它),其值通常默认自动处理且最大不超过16,你可以手动指定到其它的固定值。

如需启用全部功能需要下载外部依赖。只需要指定模块的则只下载模块对应的依赖即可。(注意依赖链接的说明里可能会进一步要求你安装更多前置/附属依赖)

全部依赖汇总 展开查看

py-scripts
mvsfunc(legcy)
nnedi3_resample
qtgmc

pip3-pkgs
numpy onnx vstools vsdenoise vsexprtools vsrgtools

vs-plugins
Anime4KCPP
akarin
BilateralGPU_RTC
BM3D
BM3DCUDA_RTC
Bwdif
dfttest2
DualSynth-madVR
EEDI2CUDA
EEDI3
FFT3DFilter
fmtconv
KNLMeansCL
Miscellaneous_Filters
MVTools
Neo_f3kdb
Neo_FFT3D
NNEDI3CL
RemoveGrain
RIFE(fork)
TDeintMod
TemporalSoften2
TIVTC
SVPflow1
SVPflow2
VIVTC
VMAF
vs-nlm-cuda
vs-nlm-ispc
vsmlrt
Yadifmod
znedi3

addones
libfftw3f-3.dll
madVR(beta/test)

格式控制


FMT_CHANGE

FMT_CHANGE(input=?, fmtc=False, algo=1, param_a=0.0, param_b=0.0, w_out=0, h_out=0, fmt_pix=-1, dither=0, vs_t=?)

(备用)格式转换

fmtc True|False
algo 1|2|3|4 缩放算法,分别对应: bilinear bicubic lanczos spline36
param_a 浮点 仅当 algo23 时有效
param_b 浮点 仅当 algo2 时有效
w_out 整数 输出宽度
h_out 整数 输出高度
fmt_pix -1|0|1|2|3 像素格式,分别对应: 同源 自动 yuv420p8 yuv420p10 yuv444p16
dither 0|1|2|3 色深抖动算法,分别对应: none ordered random error_diffusion

FMT_CTRL

FMT_CTRL(input=?, h_max=0, h_ret=False, spl_b=1/3, spl_c=1/3, fmt_pix=0, vs_t=?)

用于检测或限制尺寸、像素格式。

h_max 整数 表示检测的最大高度限制
h_ret True|False 当为 True 时,中断后续执行。否则转换输入源到 h_max 指定的高度
spl_b 浮点 转换时所用的算法为bcspline,此项和下一项分别对应B、C的值
spl_c 浮点
fmt_pix 0|1|2|3 像素格式, 0 表示自动,其它几个值分别对应 yuv420p8 yuv420p10 yuv444p16

P.S. 简易的使用 FMT_CTRL(input=?) 来限制或转换输入源在YUV10位内


FPS_CHANGE

FPS_CHANGE(input=?, fps_in=24.0, fps_out=60.0, vs_t=?)

用于转换帧率(不支持VFR)。

fps_in 浮点 指定输入源的帧率
fps_out 浮点 指定输出的帧率

FPS_CTRL

FPS_CTRL(input=?, fps_in=23.976, fps_max=32.0, fps_out=None, fps_ret=False, vs_t=?)

用于检测或限制帧率。

fps_in 浮点 指定输入源的帧率
fps_max 浮点 指定检测的最大帧率
fps_out (可选)浮点 指定输出的帧率
fps_ret True|False 当为 True 时,中断后续执行。否则转换输入源到 fps_out 指定的帧率,如果 fps_out 未填写则使用 fps_max 的值

超分


ACNET_STD

所需依赖:Anime4KCPP

ACNET_STD(input=?, nr=1, nr_lv=1, gpu=0, gpu_m=1, vs_t=?)

使用acnet算法固定放大两倍,附带降噪(只适合Anime风格)。
追求速度应使用着色器版本,例如 ACNet_HDN_L1.glsl

nr 0|1 是否降噪, 0 为禁用
nr_lv 1|2|3 降噪强度
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_m 1|2 选择其中一种显卡加速模式,分别对应 OpenCL Cuda

ARTCNN_NV

所需依赖:vsmlrt

ARTCNN_NV(input=?, lt_hd=False, model=8, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 ArtCNN 固定放大2倍(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 6|7|8 使用的模型,详见下方解释
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
模型代号中的 6 为ArtCNN_R16F96, 7 为ArtCNN_R8F64, 8 为ArtCNN_R8F64_DS


CUGAN_NV

所需依赖:vsmlrt

CUGAN_NV(input=?, lt_hd=False, nr_lv=-1, sharp_lv=1.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 Real-CUGAN (pro) 固定放大两倍,附带降噪(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
nr_lv -1|0|3 降噪强度, -1 为不降噪
sharp_lv 浮点 锐度,应介于 0..02.0
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。

Note

使用 vsNV 包的用户:此功能所需的模型文件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_0_7.cugan-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/models/cugan/pro-conservative-up2x.onnx


EDI_US_STD

所需依赖:fmtconv + mvsfunc(legcy) + nnedi3_resample + NNEDI3CL + znedi3

EDI_US_STD(input=?, ext_proc=True, nsize=4, nns=3, cpu=True, gpu=-1, vs_t=?)

用nnedi3算法固定放大两倍。
追求速度应使用着色器版本,例如 nnedi3_nns128_win8x4.glsl

ext_proc True|False 是否使用外部的(提速)格式转换处理
nsize 0|4 分别对应 8x6 8x4
nns 2|3|4 分别对应 64 128 256
cpu True|False 分别对应使用cpu还是gpu
gpu -1|0|1|2 指定显卡, 0 为排序一号, -1 为自动

ESRGAN_DML

所需依赖:vsmlrt

ESRGAN_DML(input=?, lt_hd=False, model=5005, gpu=0, gpu_t=2, vs_t=?)

用 Real-ESRGAN 固定放大两/四倍(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 0|2|5005|5006|5007|5008|5009|5010 使用的模型,详见下方解释
gpu 0|1|2 指定显卡,0为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过4)

模型代号中的 0 为realesr-animevideoxs, 2 为realesr-animevideov3, 5005 - 5007 分别为janaiv2的最快和最好质量型号(5008 - 5010 分别为janaiv3-hd的最快和最好质量型号)
模型 RealESRGANv2-animevideo-xsx2 原生放大2倍, realesr-animevideov3 模型原生放大4倍, animejanaiV2/3 模型原生放大2倍


ESRGAN_NV

所需依赖:vsmlrt

ESRGAN_NV(input=?, lt_hd=False, model=5005, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 Real-ESRGAN 固定放大两/4倍(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 0|2|5005|5006|5007|5008|5009|5010 使用的模型,详见下方解释
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
模型代号中的 0 为realesr-animevideoxs, 2 为realesr-animevideov3, 5005 - 5007 分别为janaiv2的最快和最好质量型号(5008 - 5010 分别为janaiv3-hd的最快和最好质量型号)
模型 RealESRGANv2-animevideo-xsx2 原生放大2倍, realesr-animevideov3 模型原生放大4倍, animejanaiV2/3 模型原生放大2倍


NGU_HQ

所需依赖:DualSynth-madVR + madVR(beta/test)

NGU_HQ(input=?, vs_t=?)

使用madVR的NGU-AA(high)算法放大两倍(实验性)

仅供测试,当前既无法指定显卡,性能的利用率也非常低(比在mpc在使用的性能要求可能要翻倍)。

Note

使用 vsAMD/vsNV 包的用户:此功能所需的madVR组件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_4_3.mad.b204.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/madVR/madVR64.ax


WAIFU_DML

所需依赖:vsmlrt

WAIFU_DML(input=?, lt_hd=False, model=3, nr_lv=1, gpu=0, gpu_t=2, vs_t=?)

用 waifu2x 固定放大两倍(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 3|5|6 使用的模型, 3 为upconv_7_anime_style_art_rgb, 5 为upresnet10, 6 为cunet
nr_lv -1|0|1|2|3 降噪强度, -1 为不降噪
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4

Note

使用 vsAMD/vsNV 包的用户:此功能所需的模型文件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_1.waifu-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/models/waifu2x/upconv_7_anime_style_art_rgb/noise0_scale2.0x_model.onnx


WAIFU_NV

所需依赖:vsmlrt

WAIFU_NV(input=?, lt_hd=False, model=3, nr_lv=1, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 waifu2x 固定放大两倍(只适合Anime风格)。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 3|5|6 使用的模型, 3 为upconv_7_anime_style_art_rgb, 5 为upresnet10, 6 为cunet
nr_lv -1|0|1|2|3 降噪强度, -1 为不降噪
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。

Note

使用 vsNV 包的用户:此功能所需的模型文件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_1.waifu-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/models/waifu2x/upconv_7_anime_style_art_rgb/noise0_scale2.0x_model.onnx


运动补偿


MVT_LQ

所需依赖:MVTools

MVT_LQ(input=?, fps_in=23.976, fps_out=59.940, recal=True, block=True, vs_t=?)

补帧至任意帧率(不支持VFR)。

fps_in 浮点 指定输入源的帧率
fps_out 浮点 指定输出帧率
recal True|False 是否使用二次分析
block True|False 是否使用Block(速度快)模式

MVT_STD

所需依赖:MVTools

MVT_STD(input=?, fps_in=23.976, fps_out=59.940, vs_t=?)

补帧至任意帧率(不支持VFR)。

fps_in 浮点 指定输入源的帧率
fps_out 浮点 指定输出帧率

MVT_POT

所需依赖:MVTools

MVT_POT(input=?, fps_in=23.976, fps_out=59.940, vs_t=?)

用mvtools的block或flow模式补帧至任意帧率(不支持VFR;移植自Potplayer)。

fps_in 浮点 指定输入源的帧率
fps_out 浮点 指定输出帧率

MVT_MQ

所需依赖:MVTools

MVT_MQ(input=?, fps_in=23.976, fps_out=59.940, qty_lv=1, block=True, blksize=8, thscd1=360, thscd2=80, vs_t=?)

用mvtools的block或flow模式补帧至任意帧率(不支持VFR;修改自xvs)。

fps_in 浮点 指定输入源的帧率
fps_out 浮点 指定输出帧率
qty_lv 1|2|3 质量等级
block True|False 是否使用Block(速度快)模式
blksize 4|8|16|32 块尺寸
thscd1 整数 块阈值1
thscd2 0~255 整数 块阈值2

RIFE_STD

所需依赖:Miscellaneous_Filters + MVTools + RIFE(fork) + VMAF

RIFE_STD(input=?, model=21, t_tta=False, fps_num=2, fps_den=1, sc_mode=1, skip=True, stat_th=60.0, gpu=0, gpu_t=2, vs_t=?)

用 rife v4+ 补帧至任意倍率。

model 23|64|65 使用的模型,分别对应4.6 4.22 4.22lite
t_tta True|False 是否使用ensemble版模型
fps_num 整数 fps_num/fps_den 的值即帧率倍数(计算结果可为浮点)
fps_den 整数
sc_mode 0|1|2 场景切换检测的模式, 0 为禁用
skip True|False 是否跳过静止帧,不对该类帧进行补偿计算
stat_th 浮点 静止帧的检测阈值(最大 60.0
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4

性能需求 —— 模型4.22 > 4.22lite > 4.6 ,ensemble版模型 > 常规版。4.22(lite)没有ensemble版模型


RIFE_NV

所需依赖:
(必要)
pip3: numpy onnx
plugins: Miscellaneous_Filters + MVTools + vsmlrt
(可选)
plugins: akarin

RIFE_NV(input=?, lt_d2k=False, model=46, ext_proc=True, t_tta=False, fps_in=23.976, fps_num=2, fps_den=1, sc_mode=1, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 rife v4+ 补帧至固定整数倍。

lt_d2k True|False 是否对超过DCI2K分辨率的源进行补帧
model 46|422|4221 使用的模型,分别对应 4.6 4.22 4.22lite
ext_proc True|False 是否使用外部的填充裁切处理(禁用将强制锁定为静态引擎)
t_tta True|False 是否使用ensemble版模型
fps_in 浮点 指定输入源的帧率
fps_num 整数 fps_num/fps_den 的值即帧率倍数(计算结果可为浮点)
fps_den 整数
sc_mode 0|1|2 场景切换检测的模式, 0 为禁用
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(QVGA→DCI4K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

性能需求 —— 模型4.22 > 4.22lite > 4.6 ,ensemble版模型 > 常规版 ;禁用 ext_proc 速度可能会更快。4.22(lite)没有ensemble版模型


SVP_LQ

所需依赖:SVPflow1 + SVPflow2

SVP_LQ(input=?, fps_in=23.976, fps_num=2, cpu=0, gpu=0, vs_t=?)

用svpflow算法(修改自mvtools的flow模式)补帧至固定整数倍。

fps_in 浮点 指定输入源的帧率
fps_num 2|3|4 补帧倍率
cpu 0|1 是否只使用CPU, 0 为启用显卡加速
gpu 0|11|12|21 指定显卡, 0 为排序一号

Note

使用 vsAMD/vsNV 包的用户:此功能所需的SVP组件不被附带在包中


SVP_STD

所需依赖:SVPflow1 + SVPflow2

SVP_STD(input=?, fps_in=23.976, fps_out=59.940, cpu=0, gpu=0, vs_t=?)

用svpflow算法(修改自mvtools的flow模式)补帧至任意帧率(不支持VFR)。

fps_in 浮点 指定输入源的帧率
fps_num 2|3|4 补帧倍率
cpu 0|1 是否只使用CPU, 0 为启用显卡加速
gpu 0|11|12|21 指定显卡, 0 为排序一号

Note

使用 vsAMD/vsNV 包的用户:此功能所需的SVP组件不被附带在包中


SVP_HQ

所需依赖:SVPflow1 + SVPflow2

SVP_HQ(input=?, fps_in=23.976, fps_dp=59.940, cpu=0, gpu=0, vs_t=?)

用svpflow算法(修改自mvtools的flow模式)补帧至60(不支持VFR;移植自 natural-harmonia-gropius 的旧脚本)。

fps_in 浮点 指定输入源的帧率
fps_dp 浮点 指定显示器刷新率
cpu 0|1 是否只使用CPU, 0 为启用显卡加速
gpu 0|11|12|21 指定显卡, 0 为排序一号

Note

使用 vsAMD/vsNV 包的用户:此功能所需的SVP组件不被附带在包中


SVP_PRO

所需依赖:SVPflow1 + SVPflow2

SVP_PRO(input=?, fps_in=23.976, fps_num=2, fps_den=1, abs=False, cpu=0, nvof=False, gpu=0, vs_t=?)

用svpflow算法(修改自mvtools的flow模式)补帧(修改自 BlackMickey 的方案)。

fps_in 浮点 指定输入源的帧率
fps_num 整数
fps_den 整数
abs True|False 当为 True 时,fps_num/fps_den 的计算结果为输出的帧率;否则为输出的倍率
cpu 0|1 是否只使用CPU, 0 为使用显卡加速
nvof True|False 是否使用Nvdia Optical Flow(启用时需要使用显卡加速)
gpu 0|11|12|21 指定显卡, 0 为排序一号

Note

使用 vsAMD/vsNV 包的用户:此功能所需的SVP组件不被附带在包中


降噪


BILA_NV

所需依赖:BilateralGPU_RTC

BILA_NV(input=?, nr_spat=[3.0, 0.0, 0.0], nr_csp=[0.02, 0.0, 0.0], gpu=0, gpu_t=4, vs_t=?)

用双边滤波算法降噪。

nr_spat 浮点数组 每平面的降噪强度
nr_csp 浮点数组 每平面的模糊强度
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过CPU线程数)

BM3D_NV

所需依赖:BM3DCUDA_RTC

BM3D_NV(input=?, nr_lv=[5,1,1], bs_ref=8, bs_out=7, gpu=0, vs_t=?)

用bm3d算法降噪。

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

所需依赖:akarin

CCD_STD(input=?, nr_lv=20.0, vs_t=?)

降低彩噪。

nr_lv 浮点 降噪强度

DFTT_STD

所需依赖:dfttest2_CPU

DFTT_STD(input=?, plane=[0], nr_lv=8.0, size_sb=16, size_so=12, size_tb=3, vs_t=?)

DFTTest算法降噪

plane 整数组 降噪处理的平面,全平面即 [0, 1, 2]
nr_lv 浮点 降噪强度
size_sb 整数 空域窗口长度
size_so 整数 空域重叠量
size_tb 整数 时域长度(帧数)

DFTT_NV

所需依赖:dfttest2_GPURTC

DFTT_NV(input=?, plane=[0], nr_lv=8.0, size_sb=16, size_so=12, size_tb=3, gpu=0, gpu_t=4, vs_t=?)

DFTTest算法降噪

plane 整数组 降噪处理的平面,全平面即 [0, 1, 2]
nr_lv 浮点 降噪强度
size_sb 整数 空域窗口长度
size_so 整数 空域重叠量
size_tb 整数 时域长度(帧数)
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过CPU线程数)

DPIR_NR_NV

所需依赖:vsmlrt

DPIR_NR_NV(input=?, lt_hd=False, model=0, nr_lv=5.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 DPIR2021 算法降低(亮度或彩色)噪点。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 0|1 使用的模型,分别对应 drunet_gray drunet_color
nr_lv 浮点 降噪强度
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。

Note

使用 vsNV 包的用户:此功能所需的所有模型均不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_0.dpir-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/models/dpir/drunet_color.onnx


FFT3D_STD

所需依赖:FFT3DFilter + libfftw3f-3.dll + Neo_FFT3D

FFT3D_STD(input=?, mode=1, nr_lv=2.0, plane=[0], frame_bk=3, cpu_t=6, vs_t=?)

用fft3d算法降噪。

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

所需依赖:KNLMeansCL + RemoveGrain + vs-nlm-ispc

NLM_STD(input=?, blur_m=2, nlm_m=1, frame_num=1, rad_sw=2, rad_snw=2, nr_lv=3.0, gpu=0, vs_t=?)

用NL-means算法降噪。
追求速度应使用着色器版本,例如 nlmeans.glsl

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

所需依赖:RemoveGrain + vs-nlm-cuda

NLM_NV(input=?, blur_m=2, frame_num=1, rad_sw=2, rad_snw=2, nr_lv=3.0, gpu=0, gpu_t=4, vs_t=?)

用NL-means算法降噪。
追求速度应使用着色器版本,例如 nlmeans.glsl

blur_m 0|1|2 分离模式。 0 为不使用
frame_num 整数 降噪帧数
rad_sw 整数 搜索窗口半径
rad_snw 整数 近邻窗口半径
nr_lv 浮点 降噪强度
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过CPU线程数)

其它


COLOR_P3W_FIX

所需依赖:fmtconv

COLOR_P3W_FIX(input=?, linear=False, vs_t=?)

修复p3错误转换后的白点 https://github.com/mpv-player/mpv/issues/11460

linear True|False 是否线性化预处理源

CSC_RB

CSC_RB(input=?, cx=4, cy=4, sat_lv1=4.0, sat_lv2=0.8, blur=False, vs_t=?)

红蓝色度偏移修正。

cx 整数 色度平面的水平移动,正值向左
cy 整数 色度平面的垂直移动,正值向左
sat_lv1 浮点 mask阈值
sat_lv2 浮点 合并饱和度,小于 1.0 则降低饱和度
blur True|False 是否模糊mask

DEBAND_STD

所需依赖:Neo_f3kdb

DEBAND_STD(input=?, bd_range=15, bdy_rth=48, bdc_rth=48, grainy=48, grainc=48, spl_m=4, grain_dy=True, depth=8, vs_t=?)

用f3kdb算法去色带。

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 True|False 是否使用动态颗粒
depth 8|10 最终输出的色深

DEINT_LQ

所需依赖:Bwdif

DEINT_LQ(input=?, deint_m=1, tff=True, vs_t=?)

简易反交错。输出帧率为双倍

deint_m 1|2 去隔行的执行核心,分别对应 bob bwdif
tff True|False 是否顶场优先

DEINT_STD

所需依赖:Bwdif + EEDI3 + NNEDI3CL + TDeintMod + Yadifmod + znedi3

DEINT_STD(input=?, ref_m=1, tff=True, gpu=-1, deint_m=1, vs_t=?)

反交错。输出帧率为双倍

ref_m 1|2|3 参考模式,分别对应 nnedi3(cpu) nnedi3(opencl) eedi3(opencl)
tff True|False 是否顶场优先
gpu -1|0|1|2 指定显卡,0为排序一号,-1为自动
deint_m 1|2|3 去隔行的执行核心,分别对应 bwdif yadifmod tdm

DEINT_EX

所需依赖:
(必要)
py-scripts: qtgmc
plugins: znedi3 + NNEDI3CL + EEDI3 + FFT3DFilter + TemporalSoften2 + libfftw3f-3.dll + MVTools + Miscellaneous_Filters
(可选)
pip3: vstools vsdenoise vsexprtools vsrgtools
plugins: Bwdif + fmtconv + BM3D + RemoveGrain + KNLMeansCL + dfttest2

DEINT_EX(input=?, fps_in=23.976, obs=True, deint_lv=6, src_type=0, deint_den=1, tff=0, cpu=True, gpu=-1, vs_t=?)

终极反交错。

fps_in 浮点 指定输入源的帧率
obs True|False 是否使用旧版实现(只需要必要级的依赖即可运行)
deint_lv 1|2|3|4|5|6|7|8|9|10|11 质量等级
src_type 0|1|2|3 源类型,分别对应: interlaced( 0 ) general-progressive( 1 ) badly-deinterlaced( 23 )
deint_den 1|2 输出帧率处理(当 src_type0 时会先倍帧预处理),当为 2 时减半
tff 0|1|2 场序,分别对应: 自动检测 顶场优先 底场优先
cpu True|False 是否仅使用CPU
gpu -1|0|1|2 使用的显卡序号, -1 为自动, 0 为排序一号

DPIR_DBLK_NV

所需依赖:vsmlrt

DPIR_DBLK_NV(input=?, lt_hd=False, model=2, nr_lv=50.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)

用 DPIR2021 算法去块。

lt_hd True|False 是否对超过HD分辨率(720P)的源进行处理
model 2|3 使用的模型,分别对应 drunet_deblocking_grayscale drunet_deblocking_color
nr_lv 浮点 去块强度
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。

Note

使用 vsNV 包的用户:此功能所需的所有模型均不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_0.dpir-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/models/dpir/drunet_deblocking_color.onnx


EDI_AA_STD

所需依赖:NNEDI3CL + znedi3

EDI_AA_STD(input=?, cpu=True, gpu=-1, vs_t=?)

用nnedi3算法抗锯齿。

cpu True|False 分别对应使用CPU还是GPU
gpu -1|0|1|2 指定显卡, 0 为排序一号, -1 为自动

EDI_AA_NV

所需依赖:EEDI2CUDA

EDI_AA_NV(input=?, gpu=-1, gpu_t=4, vs_t=?)

用eedi2算法抗锯齿。

gpu -1|0|1|2 指定显卡, 0 为排序一号, -1 为自动
gpu_t 整数 指定显卡线程数(最大不要超过CPU线程数)

IVTC_STD

所需依赖:TIVTC + VIVTC

IVTC_STD(input=?, fps_in=25, ivtc_m=1, vs_t=?)

反转错误的帧率变换(仅限伪25/30帧转24帧)。

fps_in 浮点 指定输入源的帧率
ivtc_m 1|2 ivtc模式,分别对应 vivtc tivtc

STAB_STD

所需依赖:Miscellaneous_Filters + MVTools + RemoveGrain + TemporalSoften2

STAB_STD(input=?, vs_t=?)

镜头防抖(此类问题常见于胶片转录作品)


STAB_HQ

所需依赖:Miscellaneous_Filters + MVTools + RemoveGrain

STAB_HQ(input=?, vs_t=?)

镜头防抖(此类问题常见于胶片转录作品)


UAI_DML

所需依赖: vsmlrt + akarin

UAI_NV_DML(input=?, clamp=False, model_pth="", gpu=0, gpu_t=2, vs_t=?)

基于dx12显卡加速的使用自定义的ONNX模型(仅支持放大类)

clamp True|False 是否裁剪像素值
model_pth 字符串 模型路径(仅支持fp32接口的模型)
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4

model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
既支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
也支持读取外部绝对路径,示例 r"X:/xxx/yourmodel.onnx"
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vapoursynth64/plugins/models/ ,请将要使用的模型放置于此路径下。

👉外部及历史模型备份


UAI_NV_TRT

所需依赖: vsmlrt + akarin

UAI_NV_TRT(input=?, clamp=False, model_pth="", opt_lv=3, cuda_opt=[0, 0, 0], fp16=False, gpu=0, gpu_t=2, st_eng=False, res_opt=None, res_max=None, ws_size=0, vs_t=?)

使用自定义的ONNX模型(仅支持放大类)

clamp True|False 是否裁剪像素值
model_pth 字符串 模型路径(支持fp16/fp32接口的模型)
opt_lv 0|1|2|3|4|5 构建优化等级。等级越低引擎的生成越快,但可能需要占用更多的性能开销。等级过高可能无法正常生成引擎
cuda_opt 整数组(仅限0或1) 是否启用Cuda的相关优化,例如 [1, 1, 1] 即对应全部启用 cuda_graph cudnn cublas 。如果要加速引擎生成,则应全部禁用
fp16 True|False 是否使用半精度浮点
gpu 0|1|2 指定显卡, 0 为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过 4
st_eng True|False 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率( 64x64 → res_max 的值)
res_opt 整数组 模型的首选优化分辨率,必须小于或等于 res_max 的值,示例 [1280, 720]
res_max 整数组 模型的最大支持的分辨率,示例 [1920, 1080]
ws_size 整数 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
既支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
也支持读取外部绝对路径,示例 r"X:/xxx/yourmodel.onnx"
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vapoursynth64/plugins/models/ ,请将要使用的模型放置于此路径下。

Important

如果使用动态引擎,则必须指定 res_optres_max ,如使用静态引擎则不填。

在使用动态引擎时, res_opt 对应的分辨率并不一定是源的分辨率,而是上一个滤镜输出的分辨率。

  • 例如你用 FMT_CTRL 模块预处理所有尺寸过大的片源到720p,那么此时的值应填 [1280, 720] (假定宽高比为16:9);
  • 如果你不用 FMT_CTRL 模块限制分辨率,那么在此时的值应填你最常用的分辨率,比如你看1080p的视频最多,应填 [1920, 1080]

Tip

在使用动态引擎时, res_opt 限制的是待处理片段的最大分辨率,此分辨率同样并非源的分辨率,而是上一个滤镜输出的分辨率。
分辨率给的越大,越需要更大的显存和更长的引擎构建时间,示例的1080p已经足够了。
因此,不要填 [3840, 2160] 这种不切实际的值(这表示支持4k超到8k,等有RTX6090的话你再试试)。

👉外部及历史模型备份


UVR_MAD

所需依赖:DualSynth-madVR + madVR(beta/test)

UVR_MAD(input=?, ngu=0, ngu_q=1, rca_lv=0, rca_q=1, vs_t=?)

使用自定义的madVR参数渲染(实验性)

ngu 0|1|2|3|4 是否使用NGU放大两倍, 0 为禁用,剩下的数值分别对应变体 Anti-Alias Soft Standard Sharp
ngu_q 1|2|3|4 NGU的质量,分别对应 low media high veryHigh
rca_lv 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14 reduce compression artifacts 的强度, 0 为禁用
rca_q 1|2|3|4 reduce compression artifacts 的质量,分别对应 low media high veryHigh

仅供测试,当前既无法指定显卡,性能的利用率也非常低(比在mpc在使用的性能要求可能要翻倍)。

Note

使用 vsAMD/vsNV 包的用户:此功能所需的madVR组件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_4_3.mad.b204.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vapoursynth64/plugins/madVR/madVR64.ax