-
Notifications
You must be signed in to change notification settings - Fork 217
3_K7sfunc
**当前文档对应的版本 1.8.1 **
为mpv特向优化的vs包装器
- 主要特点
模块化各vs滤镜 ——
简化脚本内调用的方式,降低仓库内已公开的vapoursynth滤镜的使用门槛;
便于在单个vpy脚本中快速合并多个效果,减少串联多个vf产生的多余性能损失。
- 可用模块
大致分为六个组:“格式控制” “超分”(SR) “运动补偿”(MEMC) “去块降噪”(DBLK&NR) “其它”(ETC) “混合”(MIX)。
每组可用的具体模块说明跳转后方的 👉 详细介绍。
(1) 安装前置环境 Python + VapourSynth ,此步骤的教程可参考 mpv通用教程(#vapoursynth) / mpv通用教程补充 / 从零部署
从此处下载快速部署包后解压至mpv.exe的路径 https://github.com/hooke007/dotfiles/releases/tag/mpv_addones
(使用 mpv-lazy 可跳过此步)
(2) 切换到部署包解压后的目录运行终端PowerShell命令 ./python -m pip install -U k7sfunc
执行完此步骤即视为“安装完毕”。
(使用 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" )。
简单认识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导入的),处理step02,container_fpsdisplay_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脚本
-
带
_NV后缀的模块为nvidia RTX显卡专用。 -
各模块的头部代码块表示的是该模块内各个参数的默认值。表格内第二列为各个参数的可用值。
-
各模块的参数
input都是必填项,它的值是由你定义的待处理的片段,其它见各自的介绍。示例即默认值。
对大部分模块来说,使用它们的前提是都需要下载模块对应的依赖脚本/插件/其它组件。(注意依赖链接的说明里可能会进一步要求你安装更多前置/附属依赖)
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)格式转换
| fmtc |
True|False
|
|
| algo |
1|2|3|4
|
缩放算法,分别对应: bilinear bicubic lanczos spline36 |
| param_a | 浮点 | 仅当 algo 为 2 或 3 时有效 |
| param_b | 浮点 | 仅当 algo 为 2 时有效 |
| 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(input=?, h_max=0, h_ret=False, spl_b=1/3, spl_c=1/3, fmt_pix=0)用于检测或限制尺寸、像素格式。
| 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(input=?, fps_in=24.0, fps_out=60.0)用于转换帧率(不支持VFR)。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_out | 浮点 | 指定输出的帧率 |
FPS_CTRL(input=?, fps_in=23.976, fps_max=32.0, fps_out=None, fps_ret=False)用于检测或限制帧率。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_max | 浮点 | 指定检测的最大帧率 |
| fps_out | (可选)浮点 | 指定输出的帧率 |
| fps_ret |
True|False
|
当为 True 时,中断后续执行。否则转换输入源到 fps_out 指定的帧率,如果 fps_out 未填写则使用 fps_max 的值 |
所需依赖:Anime4KCPP v3
ACNET_STD(input=?, model=1, model_var=0, turbo=False, gpu=0, gpu_m=1)使用acnet算法固定放大两倍(只适合Anime风格)。
| model |
1|2|3
|
使用的模型,分别对应 acnet-gan acnet-hdn arnet-hdn
|
| model_var |
0| 1|2|3
|
模型的变体(仅对2号模型有效,表示为降噪强度),分别对应 acnet-hdn0 acnet-hdn1 acnet-hdn2 acnet-hdn3
|
| turbo |
True|False
|
是否使用内部提速技巧 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_m |
1|2
|
选择其中一种显卡加速模式,分别对应 OpenCL Cuda |
ARTCNN_NV(input=?, lt_hd=False, model=8, gpu=0, gpu_t=2, st_eng=False, ws_size=0)用 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
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(384²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
模型代号中的 6 为ArtCNN_R16F96, 7 为ArtCNN_R8F64, 8 为ArtCNN_R8F64_DS
CUGAN_NV(input=?, lt_hd=False, nr_lv=-1, sharp_lv=1.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0)用 Real-CUGAN (pro) 固定放大两倍,附带降噪(只适合Anime风格)。
| lt_hd |
True|False
|
是否对超过HD分辨率(720P)的源进行处理 |
| nr_lv |
-1|0|3
|
降噪强度, -1 为不降噪 |
| sharp_lv | 浮点 | 锐度,应介于 0..0 到 2.0
|
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| st_eng |
True|False
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(384²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。
Note
使用 vsNV 包的用户:此功能所需的模型文件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_0_7.cugan-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vs-plugins/models/cugan/pro-conservative-up2x.onnx
EDI_US_STD(input=?, ext_proc=True, nsize=4, nns=3, cpu=True, gpu=-1)用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 为自动 |
所需依赖:DualSynth-madVR + madVR(beta/test)
NGU_HQ(input=?)使用madVR的NGU-AA(high)算法放大两倍(实验性)
仅供测试,当前既无法指定显卡,性能的利用率也非常低(比在mpc在使用的性能要求可能要翻倍)。
Note
使用 vsAMD/vsNV 包的用户:此功能所需的madVR组件不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_4_3.mad.b204.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vs-plugins/madVR/madVR64.ax
所需依赖:MVTools
MVT_LQ(input=?, fps_in=23.976, fps_out=59.940, recal=True, block=True)补帧至任意帧率(不支持VFR)。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_out | 浮点 | 指定输出帧率 |
| recal |
True|False
|
是否使用二次分析 |
| block |
True|False
|
是否使用Block(速度快)模式 |
所需依赖:MVTools
MVT_MQ(input=?, fps_in=23.976, fps_out=59.940, qty_lv=1, block=True, blksize=8, thscd1=360, thscd2=80)用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 |
DRBA_DML(input=?, model=2, turbo=1, fps_in=23.976, fps_num=2, fps_den=1, sc_mode=0, gpu=0, gpu_t=2)用 DRBA 补帧至固定数倍。
| model |
1|2
|
使用的模型,分别对应 v1 v2_lite |
| turbo |
0|1|2
|
使用内部提速技巧的等级, 0 为禁用 |
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
性能需求 —— 模型v1 > v2_lite
DRBA_NV(input=?, model=2, int8_qnt=False, turbo=1, fps_in=23.976, fps_num=2, fps_den=1, sc_mode=0, gpu=0, gpu_t=2, ws_size=0)用 DRBA 补帧至固定数倍。
| model |
1|2
|
使用的模型,分别对应 v1 v2_lite |
| int8_qnt |
True|False
|
是否混合int8量化加速(速度提升的有限,同时质量退化严重) |
| turbo |
0|1|2
|
使用内部提速技巧的等级, 0 为禁用 |
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
性能需求 —— 模型v1 > v2_lite
Caution
对Windows用户已过时,换用 RIFE_DML
所需依赖:MVTools + RIFE(fork) + VMAF
RIFE_STD(input=?, model=21, turbo=2, fps_num=2, fps_den=1, sc_mode=1, stat_th=60.0, gpu=0, gpu_t=2)用 rife v4+ 补帧至任意倍率。
| model |
23|70|72|73
|
使用的模型,分别对应4.6 4.25lite 4.26 4.26heavy |
| turbo |
0|1|2
|
使用内部提速技巧的等级, 0 为禁用 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| stat_th | 浮点 | 静止帧的检测阈值(最大 60.0 ),跳过相似帧(需要 turbo 为 2 ) |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
性能需求 —— 模型4.26heavy > 4.26 > 2.25lite > 4.6
[!NOTE]
使用 vsNV 包的用户:此功能所需的核心组件及所有模型均不被附带在包中,从 👉此链接 手动获取vs-k7sfunc.x_x_x.rife_std-core_models.7z
解压相关文件到指定路径中,示例.../mpv-lazy/vs-plugins/librife_windows_x86-64.dll
RIFE_DML(input=?, model=46, turbo=True, fps_in=23.976, fps_num=2, fps_den=1, sc_mode=1, gpu=0, gpu_t=2)用 rife v4+ 补帧至固定数倍。
| model |
46|4251|426|4262
|
使用的模型,分别对应 4.6 4.25lite 4.26 4.26heavy |
| turbo |
True|False
|
是否使用内部提速技巧 |
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点,但此时不适用VFR,因为会产生音画偏移) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
性能需求 —— 模型4.26heavy > 4.26 > 2.25lite > 4.6
RIFE_NV(input=?, model=46, int8_qnt=False, turbo=2, fps_in=23.976, fps_num=2, fps_den=1, sc_mode=1, gpu=0, gpu_t=2, ws_size=0)用 rife v4+ 补帧至固定数倍。
| model |
46|4251|426|4262
|
使用的模型,分别对应 4.6 4.25lite 4.26 4.26heavy |
| int8_qnt |
True|False
|
是否混合int8量化加速(速度提升的有限,同时质量退化严重) |
| turbo |
0|1|2
|
使用内部提速技巧的等级, 0 为禁用 |
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点,但此时不适用VFR,因为会产生音画偏移) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
性能需求 —— 模型4.26heavy > 4.26 > 2.25lite > 4.6
SVP_LQ(input=?, fps_in=23.976, fps_num=2, cpu=0, gpu=0)用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_HQ(input=?, fps_in=23.976, fps_dp=59.940, cpu=0, gpu=0)用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(input=?, fps_in=23.976, fps_num=2, fps_den=1, abs=False, cpu=0, nvof=False, gpu=0)用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组件不被附带在包中
DPIR_DBLK_NV(input=?, lt_hd=False, model=2, nr_lv=50.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0)用 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
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(384²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。
Note
使用 vsNV 包的用户:此功能所需的所有模型均不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_0.dpir-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vs-plugins/models/dpir/drunet_deblocking_color.onnx
所需依赖: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)用双边滤波算法降噪。
| nr_spat | 浮点数组 | 每平面的降噪强度 |
| nr_csp | 浮点数组 | 每平面的模糊强度 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过CPU线程数) |
所需依赖:BM3DCUDA_RTC
BM3D_NV(input=?, nr_lv=[5,0,0], bs_ref=8, bs_out=7, gpu=0)用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 为排序一号 |
所需依赖:akarin
CCD_STD(input=?, nr_lv=20.0)降低彩噪。
| nr_lv | 浮点 | 降噪强度 |
所需依赖:dfttest2_CPU
DFTT_STD(input=?, plane=[0], nr_lv=8.0, size_sb=16, size_so=12, size_tb=3)DFTTest算法降噪
| plane | 整数组 | 降噪处理的平面,全平面即 [0, 1, 2]
|
| nr_lv | 浮点 | 降噪强度 |
| size_sb | 整数 | 空域窗口长度 |
| size_so | 整数 | 空域重叠量 |
| size_tb | 整数 | 时域长度(帧数) |
所需依赖: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)DFTTest算法降噪
| plane | 整数组 | 降噪处理的平面,全平面即 [0, 1, 2]
|
| nr_lv | 浮点 | 降噪强度 |
| size_sb | 整数 | 空域窗口长度 |
| size_so | 整数 | 空域重叠量 |
| size_tb | 整数 | 时域长度(帧数) |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过CPU线程数) |
DPIR_NR_NV(input=?, lt_hd=False, model=0, nr_lv=5.0, gpu=0, gpu_t=2, st_eng=False, ws_size=0)用 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
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(384²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用静态引擎,其次限制 ws_size 的值。
Note
使用 vsNV 包的用户:此功能所需的所有模型均不被附带在包中,从 👉此链接 手动获取 vs-k7sfunc.0_2_0.dpir-models.7z
解压相关文件到指定路径中,示例 .../mpv-lazy/vs-plugins/models/dpir/drunet_color.onnx
所需依赖:FFT3DFilter + libfftw3f-3.dll + Neo_FFT3D
FFT3D_STD(input=?, mode=1, nr_lv=2.0, plane=[0], frame_bk=3, cpu_t=6)用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 | 整数 | 使用的处理器线程数 |
所需依赖:KNLMeansCL + zsmooth + 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)用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 为排序一号 |
所需依赖:vs-nlm-cuda + zsmooth
NLM_NV(input=?, blur_m=2, frame_num=1, rad_sw=2, rad_snw=2, nr_lv=3.0, gpu=0, gpu_t=4)用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线程数) |
CSC_UV(input=?, cx=4, cy=4, sat_lv1=4.0, sat_lv2=0.8, blur=False)UV色度偏移修正。
| cx | 整数 | 色度平面的水平移动,正值向左 |
| cy | 整数 | 色度平面的垂直移动,正值向左 |
| sat_lv1 | 浮点 | mask阈值 |
| sat_lv2 | 浮点 | 合并饱和度,小于 1.0 则降低饱和度 |
| blur |
True|False
|
是否模糊mask |
所需依赖:vszip
DEBAND_STD(input=?, bd_range=15, bdy_rth=48.0, grainy=48.0, spl_m=4, grain_dy=True)用f3kdb算法去色带,仅处理Y平面。
| bd_range | 整数 | 色带检测范围 |
| bdy_rth | 浮点 | 色带检测阈值 —— Y平面,范围 0.0~255.0
|
| grainy | 浮点 | 最后阶段添加的颗粒数 —— Y平面,范围 0.0~255.0
|
| spl_m |
1|2|3|4
|
采样模式,分别对应 Column Square Row Average(Column&Row) |
| grain_dy |
True|False
|
是否使用动态颗粒 |
所需依赖:Bwdif
DEINT_LQ(input=?, iden=True, tff=True)简易反交错。
| iden |
True|False
|
是否输出双倍帧率 |
| tff |
True|False
|
是否顶场优先 |
所需依赖:Bwdif + EEDI3 + NNEDI3CL + TDeintMod + Yadifmod + znedi3
DEINT_STD(input=?, ref_m=1, tff=True, gpu=-1, deint_m=1)反交错。输出帧率为双倍
| 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 |
所需依赖:
plugins: znedi3 + NNEDI3CL + EEDI3 + FFT3DFilter + libfftw3f-3.dll + MVTools + KNLMeansCL + dfttest2 + zsmooth
DEINT_EX(input=?, fps_in=23.976, deint_lv=6, src_type=0, deint_den=1, tff=0, cpu=True, gpu=-1)终极反交错。
| fps_in | 浮点 | 指定输入源的帧率 |
| 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( 2 或 3 ) |
| deint_den |
1|2
|
输出帧率处理(当 src_type 为 0 时会先倍帧预处理),当为 2 时减半 |
| tff |
0|1|2
|
场序,分别对应: 自动检测 顶场优先 底场优先 |
| cpu |
True|False
|
是否仅使用CPU |
| gpu |
-1|0|1|2
|
使用的显卡序号, -1 为自动, 0 为排序一号 |
EDI_AA_STD(input=?, cpu=True, gpu=-1)用nnedi3算法抗锯齿。
| cpu |
True|False
|
分别对应使用CPU还是GPU |
| gpu |
-1|0|1|2
|
指定显卡, 0 为排序一号, -1 为自动 |
所需依赖:EEDI2CUDA
EDI_AA_NV(input=?, gpu=-1, gpu_t=4)用eedi2算法抗锯齿。
| gpu |
-1|0|1|2
|
指定显卡, 0 为排序一号, -1 为自动 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过CPU线程数) |
IVTC_STD(input=?, fps_in=25, ivtc_m=1)反转错误的帧率变换(仅限伪25/30帧转24帧)。
| fps_in | 浮点 | 指定输入源的帧率 |
| ivtc_m |
1|2
|
ivtc模式,分别对应 vivtc tivtc |
STAB_STD(input=?)镜头防抖(此类问题常见于胶片转录作品)
STAB_HQ(input=?)镜头防抖(此类问题常见于胶片转录作品)
UAI_DML(input=?, crc=False, model_pth="", fp16_qnt=True, gpu=0, gpu_t=2)基于dx12显卡加速的使用自定义的ONNX模型(仅支持放大类)
| crc |
True|False
|
是否执行色彩恢复补偿 |
| model_pth | 字符串 | 模型路径 |
| fp16_qnt |
True|False
|
是否为fp32模型使用混合fp16量化以提速 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
crc 仅适用于有明显错误偏色的模型,因为色彩变化可能就是模型设计的一部分。
model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
既支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
也支持读取外部绝对路径,示例 r"X:/xxx/yourmodel.onnx"
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vs-plugins/models/ ,请将要使用的模型放置于此路径下。
UAI_MIGX(input=?, crc=False, model_pth="", fp16_qnt=True, exh_tune=False, gpu=0, gpu_t=2)基于RDNA显卡加速的使用自定义的ONNX模型(仅支持放大类)
| crc |
True|False
|
是否执行色彩恢复补偿 |
| model_pth | 字符串 | 模型路径 |
| fp16_qnt |
True|False
|
是否为fp32模型使用混合fp16量化以提速 |
| exh_tune |
True|False
|
穷举优化法 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
crc 仅适用于有明显错误偏色的模型,因为色彩变化可能就是模型设计的一部分。
model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
既支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
也支持读取外部绝对路径,示例 r"X:/xxx/yourmodel.onnx"
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vs-plugins/models/ ,请将要使用的模型放置于此路径下。
UAI_NV_TRT(input=?, crc=False, model_pth="", opt_lv=3, cuda_opt=[0, 0, 0], int8_qnt=False, fp16_qnt=False, gpu=0, gpu_t=2, st_eng=False, res_opt=None, res_max=None, ws_size=0)使用自定义的ONNX模型(仅支持放大类)
| crc |
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 。如果要加速引擎生成,则应全部禁用 |
| int8_qnt |
True|False
|
是否混合int8量化以提速(不同架构的模型提速表现不一,但总体都有明显的质量退化) |
| fp16_qnt |
True|False
|
是否为fp32模型使用混合fp16量化以提速 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| st_eng |
True|False
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率( 384x384 → res_max 的值) |
| res_opt | 整数组 | 模型的首选优化分辨率,必须小于或等于 res_max 的值,示例 [1280, 720]
|
| res_max | 整数组 | 模型的最大支持的分辨率,示例 [1920, 1080]
|
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
crc 仅适用于有明显错误偏色的模型,因为色彩变化可能就是模型设计的一部分。
model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
既支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
也支持读取外部绝对路径,示例 r"X:/xxx/yourmodel.onnx"
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vs-plugins/models/ ,请将要使用的模型放置于此路径下。
Important
如果使用动态引擎,则必须指定 res_opt 和 res_max ,如使用静态引擎则不填。
在使用动态引擎时, res_opt 对应的分辨率并不一定是源的分辨率,而是上一个滤镜输出的分辨率。
- 例如你用 FMT_CTRL 模块预处理所有尺寸过大的片源到720p,那么此时的值应填
[1280, 720](假定宽高比为16:9); - 如果你不用 FMT_CTRL 模块限制分辨率,那么在此时的值应填你最常用的分辨率,比如你看1080p的视频最多,应填
[1920, 1080]
Tip
在使用动态引擎时, res_max 限制的是待处理片段的最大分辨率,此分辨率同样并非源的分辨率,而是上一个滤镜输出的分辨率。
分辨率给的越大,越需要更大的显存和更长的引擎构建时间,示例的1080p已经足够了。
因此,不要填 [3840, 2160] 这种不切实际的值(这表示支持4k超到8k,等有RTX6090的话你再试试)。
所需依赖:DualSynth-madVR + madVR(beta/test)
UVR_MAD(input=?, ngu=0, ngu_q=1, rca_lv=0, rca_q=1)使用自定义的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/vs-plugins/madVR/madVR64.ax