-
Notifications
You must be signed in to change notification settings - Fork 222
3_K7sfunc
为mpv特向优化的vs包装器
- 主要特点
模块化各vs滤镜 ——
简化脚本内调用的方式,降低仓库内已公开的vapoursynth滤镜的使用门槛;
便于在单个vpy脚本中快速合并多个效果,减少串联多个vf产生的多余性能损失。
- 可用模块
大致分为五个组:“格式控制” “超分”(SR) “运动补偿”(MEMC) “降噪”(NR) “其它”(ETC)。
每组可用的具体模块说明跳转后方的 👉 详细介绍。
(1) 安装前置环境 Python + VapourSynth ,此步骤的教程可参考 mpv通用教程(#vapoursynth) / mpv通用教程补充 / 从零部署
(使用 mpv-lazy 可跳过此步)
(2) k7sfunc.py 为常规的python脚本,下载后放入python path即可被自动读取。(以mpv-lazy的预设方式,放在 python.exe 同路径下即可)
执行完此步骤即视为“安装完毕”。
(使用 mpv-lazy 可跳过此步)
(3) 依据自己要使用的模块下载对应的依赖,此步骤的教程可参考步骤1
(使用 mpv-lazy 则可直接下载release页面的 vsLite 或 vsMega 包)
(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脚本
对应版本 0.1.23
带有 “开发版” 字样的模块/参数表示仅在 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
EEDI2CUDA
EEDI3
FFT3DFilter
fmtconv
KNLMeansCL
libfftw3f-3.dll
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
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 | 浮点 | 仅当 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, 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(input=?, fps_in=24.0, fps_out=60.0, vs_t=?)用于转换帧率(不支持VFR)。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_out | 浮点 | 指定输出的帧率 |
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 的值 |
所需依赖: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 |
所需依赖:vsmlrt
CUGAN_NV(input=?, lt_hd=False, nr_lv=-1, 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 为不降噪 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| st_eng |
True|False
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
如需制约或节约显存占用,应优先启用动态引擎,其次限制 ws_size 的值。
所需依赖: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(input=?, lt_hd=False, model=5005, scale=2, gpu=0, gpu_t=2, vs_t=?)用 Real-ESRGAN 固定放大整数倍(只适合Anime风格)。
| lt_hd |
True|False
|
是否对超过HD分辨率(720P)的源进行处理 |
| model |
0|2|5005|5006|5007
|
使用的模型, 0 为realesr-animevideoxs, 2 为realesr-animevideov3, 5005 - 5007 分别为janaiv2的最快和最好质量型号 |
| scale |
1|2|3|4
|
放大倍率, 1 为不放大。animevideoxs模型原生放大2倍,animevideov3模型原生放大4倍,janaiv2模型原生放大2倍 |
| gpu |
0|1|2
|
指定显卡,0为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过4) |
当 scale 的倍率与模型的原生放大倍率不匹配时,将启用内部高质量采样处理(例如模型为4倍而参数指定2倍数),或内部运行两次模型来匹配(例如模型为2倍而参数指定4倍数)。
ESRGAN_NV(input=?, lt_hd=False, model=5005, scale=2, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)用 Real-ESRGAN 固定放大整数倍(只适合Anime风格)。
| lt_hd |
True|False
|
是否对超过HD分辨率(720P)的源进行处理 |
| model |
0|2|5005|5006|5007
|
使用的模型, 0 为realesr-animevideoxs, 2 为realesr-animevideov3, 5005 - 5007 分别为janaiv2的最快和最好质量型号 |
| scale |
1|2|3|4
|
放大倍率, 1 为不放大。animevideoxs模型原生放大2倍,animevideov3模型原生放大4倍,janaiv2模型原生放大2倍 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| st_eng |
True|False
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
当 scale 的倍率与模型的原生放大倍率不匹配时,将启用内部高质量采样处理(例如模型为4倍而参数指定2倍数),或内部运行两次模型来匹配(例如模型为2倍而参数指定4倍数)。
WAIFU_DML(input=?, lt_hd=False, model=3, nr_lv=1, scale=2, 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 为不降噪 |
| scale |
1|2|3|4
|
放大倍率, 1 为不放大。各模型的原生放大倍率为2倍 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
当 scale 的倍率与模型的原生放大倍率不匹配时,将启用内部高质量采样处理(例如模型为2倍而参数指定1倍数),或内部运行两次模型来匹配(例如模型为2倍而参数指定4倍数)。
WAIFU_NV(input=?, lt_hd=False, model=3, nr_lv=1, scale=2, 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 为不降噪 |
| scale |
1|2|3|4
|
放大倍率, 1 为不放大。各模型的原生放大倍率为2倍 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
| st_eng |
True|False
|
是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K) |
| ws_size | 整数 | 约束显存(MiB),静态引擎的最小值为 128 (自动为动态引擎进行双倍处理),设为低于此数的值即为不限制 |
在禁用 lt_hd 的情况下,使用动态引擎时的首选优化分辨率为1280x720,启用该选项后,优化分辨率则为1920x1080。
当 scale 的倍率与模型的原生放大倍率不匹配时,将启用内部高质量采样处理(例如模型为2倍而参数指定1倍数),或内部运行两次模型来匹配(例如模型为2倍而参数指定4倍数)。
所需依赖: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(速度快)模式 |
所需依赖:MVTools
MVT_STD(input=?, fps_in=23.976, fps_out=59.940, vs_t=?)补帧至任意帧率(不支持VFR)。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_out | 浮点 | 指定输出帧率 |
所需依赖:MVTools
MVT_POT(input=?, fps_in=23.976, fps_out=59.940, vs_t=?)用mvtools的block或flow模式补帧至任意帧率(不支持VFR;移植自Potplayer)。
| fps_in | 浮点 | 指定输入源的帧率 |
| fps_out | 浮点 | 指定输出帧率 |
所需依赖: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 |
所需依赖:Miscellaneous_Filters + MVTools + RIFE(fork) + VMAF
RIFE_STD(input=?, model=9, sc_mode=1, skip=True, stat_th=60.0, fps_num=2, fps_den=1, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)
#开发版
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, st_eng=False, ws_size=0, vs_t=?)用 rife v4+ 补帧至任意倍率。
| model |
9|21|24
|
使用的模型,分别对应4.0 4.6 4.8 |
| 开发版 model |
21|33|35
|
使用的模型,分别对应4.6 4.12 4.12lite |
| 开发版 t_tta |
True|False
|
是否使用ensemble版模型 |
| fps_num | 整数 | fps_num/fps_den 的值即帧率倍数(计算结果可为浮点) |
| fps_den | 整数 | |
| sc_mode |
0|1|2
|
场景切换检测的模式, 0 为禁用 |
| skip |
True|False
|
是否跳过静止帧,不对该类帧进行补偿计算 |
| stat_th | 浮点 | 静止帧的检测阈值 |
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
开发版:性能需求 —— 模型4.12 >> 4.12lite > 4.6 ,ensemble版模型 > 常规版
所需依赖:
(必要)
pip3:numpyonnx
plugins: Miscellaneous_Filters + MVTools + vsmlrt
(可选)
plugins: akarin
RIFE_NV(input=?, lt_d2k=False, model=40, sc_mode=1, fps_num=2, t_tta=False, ext_proc=True, gpu=0, gpu_t=2, st_eng=False, ws_size=0, vs_t=?)
#开发版
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 |
40|46|48
|
使用的模型,分别对应 4.0 4.6 4.8 |
| 开发版 model |
46|413|4131
|
使用的模型,分别对应 4.6 4.13 4.13lite |
| ext_proc |
True|False
|
是否使用外部的填充裁切处理(禁用将强制锁定为静态引擎) |
| t_tta |
True|False
|
是否使用ensemble版模型 |
| 开发版 fps_in | 浮点 | 指定输入源的帧率 |
| fps_num |
2|3|4
|
补帧倍率 |
| 开发版 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.13 >> 4.13lite > 4.6 ,ensemble版模型 > 常规版 ;禁用 ext_proc 速度会更快
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 为排序一号 |
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 为排序一号 |
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 为排序一号 |
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 为排序一号 |
所需依赖: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线程数) |
所需依赖: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 为排序一号 |
所需依赖:akarin
CCD_STD(input=?, nr_lv=20.0, vs_t=?)降低彩噪。
| nr_lv | 浮点 | 降噪强度 |
所需依赖: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 | 整数 | 时域长度(帧数) |
所需依赖: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线程数) |
所需依赖: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 | 整数 | 使用的处理器线程数 |
所需依赖: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 为排序一号 |
所需依赖: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线程数) |
所需依赖:fmtconv
COLOR_P3W_FIX(input=?, linear=False, vs_t=?)修复p3错误转换后的白点 https://github.com/mpv-player/mpv/issues/11460
| linear |
True|False
|
是否线性化预处理源 |
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 |
所需依赖: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
|
最终输出的色深 |
所需依赖:Bwdif
DEINT_LQ(input=?, deint_m=1, tff=True, vs_t=?)简易反交错。输出帧率为双倍
| deint_m |
1|2
|
去隔行的执行核心,分别对应 bob bwdif |
| tff |
True|False
|
是否顶场优先 |
所需依赖: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 |
所需依赖:
(必要)
py-scripts: qtgmc
plugins: znedi3 + NNEDI3CL + EEDI3 + FFT3DFilter + TemporalSoften2 + libfftw3f-3.dll + MVTools + Miscellaneous_Filters
(可选)
pip3:vstoolsvsdenoisevsexprtoolsvsrgtools
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( 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, vs_t=?)用nnedi3算法抗锯齿。
| cpu |
True|False
|
分别对应使用CPU还是GPU |
| gpu |
-1|0|1|2
|
指定显卡, 0 为排序一号, -1 为自动 |
所需依赖: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(input=?, fps_in=23.976, ivtc_m=1, vs_t=?)
# 开发版
IVTC_STD(input=?, fps_in=25, ivtc_m=1, vs_t=?)反转错误的帧率变换(仅限伪25/30帧转24帧)。
| fps_in | 浮点 | 指定输入源的帧率 |
| ivtc_m |
1|2
|
ivtc模式,分别对应 vivtc tivtc |
所需依赖:Miscellaneous_Filters + MVTools + RemoveGrain + TemporalSoften2
STAB_STD(input=?, vs_t=?)镜头防抖(此类问题常见于胶片转录作品)
所需依赖:Miscellaneous_Filters + MVTools + RemoveGrain
STAB_HQ(input=?, vs_t=?)镜头防抖(此类问题常见于胶片转录作品)
UAI_NV_DML(input=?, clamp=False, model_pth="", gpu=0, gpu_t=2, vs_t=?)基于dx12显卡加速的使用自定义的ONNX模型(仅支持放大类)
| clamp |
True|False
|
是否裁剪像素值 |
| model_pth | 字符串 | 模型路径(仅支持fp32接口的模型),当前仅支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
|
| gpu |
0|1|2
|
指定显卡, 0 为排序一号 |
| gpu_t | 整数 | 指定显卡线程数(最大不要超过 4 ) |
model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vapoursynth64/plugins/models/ ,请将要使用的模型放置于此路径下。
UAI_NV_TRT(input=?, clamp=False, model_pth="", opt_lv=3, cuda_opt=[0, 0, 0], fp16=False, tf32=True, gpu=0, gpu_t=2, st_eng=False, res_opt=None, res_max=None, ws_size=0, vs_t=?)
# 开发版
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 | 字符串 | 模型路径(仅支持fp32接口的模型),当前仅支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
|
| opt_lv |
0|1|2|3|4|5
|
构建优化等级。等级越低引擎的生成越快,但可能需要占用更多的性能开销。等级过高可能无法正常生成引擎 |
| cuda_opt | 整数组(仅限0或1) | 是否启用Cuda的相关优化,例如 [1, 1, 1] 即对应全部启用 cuda_graph cudnn cublas 。如果要加速引擎生成,则应全部禁用 |
| fp16 |
True|False
|
是否使用半精度浮点 |
| tf32 |
True|False
|
是否启用混合精度(fp16+fp32)的支持。当 fp16 为 True 时,禁用该项可能提升性能,但并非所有模型都可在纯fp16的条件下正常工作 |
| 开发版无 tf32 | ||
| 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格式,可在下方链接中找到个人收集的兼容的第三方模型。
如果你使用的是 mpv-lazy ,则内建模型的目录为 .../mpv-lazy/vapoursynth64/plugins/models/ ,请将要使用的模型放置于此路径下。
Important
如果使用动态引擎,则必须指定 res_opt 和 res_max ,如使用静态引擎则不填。
在使用动态引擎时, res_opt 对应的分辨率并不一定是源的分辨率,而是上一个滤镜输出的分辨率。
- 例如你用 FMT_CTRL 模块预处理所有尺寸过大的片源到720p,那么此时的值应填
[1280, 720](假定宽高比为16:9); - 如果你不用 FMT_CTRL 模块限制分辨率,那么在此时的值应填你最常用的分辨率,比如你看1080p的视频最多,应填
[1920, 1080]
Tip
在使用动态引擎时, res_opt 限制的是待处理片段的最大分辨率,此分辨率同样并非源的分辨率,而是上一个滤镜输出的分辨率。
分辨率给的越大,越需要更大的显存和更长的引擎构建时间,示例的1080p已经足够了。
因此,不要填 [3840, 2160] 这种不切实际的值(这表示支持4k超到8k,等有RTX6090的话你再试试)。