-
Notifications
You must be signed in to change notification settings - Fork 157
3_K7sfunc
为mpv特向优化的vs包装器
- 主要特点
模块化各vs滤镜 ——
简化脚本内调用的方式,降低仓库内已公开的vapoursynth滤镜的使用门槛;
便于在单个vpy脚本中快速合并多个效果,减少串联多个vf产生的多余性能损失。
- 可用模块
大致分为五个组:“格式控制” “超分”(SR) “运动补偿”(MEMC) “降噪”(NR) “其它”(ETC)。
每组可用的具体模块说明跳转后方的 👉 详细介绍。
(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"
)。
简单认识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_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脚本
对应的正式版本 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(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
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
所需依赖: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..0 到 2.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
所需依赖: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 为自动 |
所需依赖: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倍
所需依赖: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倍
所需依赖: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
所需依赖: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
所需依赖: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
所需依赖: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=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版模型
所需依赖:
(必要)
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(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(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(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(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组件不被附带在包中
所需依赖: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线程数) |
所需依赖: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
所需依赖: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: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( 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 为排序一号 |
所需依赖: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(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=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接口的模型) |
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(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_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的话你再试试)。
所需依赖: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