Skip to content

3_K7sfunc

Karl Hook edited this page Nov 1, 2023 · 107 revisions

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" )。

https://mpv.io/manual/master/#video-filters-vapoursynth

创建自定义vpy脚本

示例如下 ——

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

前两行为固定内容(如果你只使用K7sfunc模块内的功能,可以不写)。
第三行为导入K7sfunc的所有模块,如果你只想导入指定的模块,则此处改写为(示例):

from k7sfunc import FMT_CTRL, MVT_LQ

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

import k7sfunc as k7f

第四行将 video_in (这是由mpv提供的)即视频,赋值给自己定义的变量 step01 ;

第五行使用模块 FMT_CTRL (这是由K7sfunc导入的),处理 step01 ,转换为常规的8位视频,并将结果赋值给 step02 ;

第六行使用另一个模块 MVT_LQ (这也是由K7sfunc导入的),处理 step02container_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)

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

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

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

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()

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

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

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

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

模块说明

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

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

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

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

全部依赖汇总 展开查看

py-scripts
mvsfunc
nnedi3_resample
qtgmc

pip3
numpy onnx vstools vsdenoise vsexprtools vsrgtools

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-ispc
vs-nlm-cuda
vsmlrt
Yadifmod
znedi3

格式控制


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 浮点 仅当 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

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

CUGAN_NV

所需依赖: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 大于0的整数 约束显存(MiB),静态引擎的最小值为128(自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

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


EDI_US_STD

所需依赖:fmtconv + mvsfunc + 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

所需依赖:fmtconv + vsmlrt

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)

ESRGAN_NV

所需依赖:fmtconv + vsmlrt

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/5000/5001/5002/5003/5004> 使用的模型,0为realesr-animevideoxs,2为realesr-animevideov3,5000-5004分别为janai的最快和最好质量型号
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 大于0的整数 约束显存(MiB),静态引擎的最小值为128(自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

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


WAIFU_DML

所需依赖:fmtconv + vsmlrt

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)

WAIFU_NV

所需依赖:fmtconv + vsmlrt

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 大于0的整数 约束显存(MiB),静态引擎的最小值为128(自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

运动补偿


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=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 v4.6 补帧至任意倍率。

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

RIFE_NV

所需依赖:
(必要)
pip3: numpy onnx
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 v4.6 补帧至固定整数倍。

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

RIFE_NV_ORT

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

RIFE_NV_ORT(input=?, sc_mode=1, fps_num=2, cudnn=False, ext_proc=False, gpu=0, gpu_t=2, vs_t=?)

用 rife v4.6 补帧至固定整数倍。(尽量改用 RIFE_STD ,因为此模块的效率比它还低)

sc_mode <0/1/2> 场景切换检测的模式,0为禁用
fps_num <2/3/4> 补帧倍率
cudnn <True/False> 是否使用cudnn(提速但会导致跳转变慢与瞬时的高显存消耗)
ext_proc <True/False> 是否使用外部的填充裁切处理(禁用将强制锁定为静态引擎)
gpu <0/1/2> 指定显卡,0为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过4)

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为排序一号

SVP_STD

所需依赖:SVPflow1 + SVPflow2

SVP_STD(input=?, fps_in=23.976, fps_out=1, 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

所需依赖:SVPflow1 + SVPflow2

SVP_HQ(input=?, fps_in=23.976, fps_dp=1, 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

所需依赖: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为排序一号

降噪


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线程数)

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算法降噪。
追求速度应使用着色器版本,例如 ../shaders/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算法降噪。
追求速度应使用着色器版本,例如 ../shaders/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
(可选)
py-scripts: mvsfunc
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> 源类型(当0时倍帧),分别对应: interlaced(0) general-progressive(1) badly-deinterlaced(2/3)
deint_den <1/2> 输出帧率处理,当为 2 时减半
tff <0/1/2> 场序,分别对应: 自动检测 顶场优先 底场优先
cpu <True/False> 是否仅使用CPU
gpu <-1/0/1/2> 使用的显卡序号,-1 为自动,0 为排序一号

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=23.976, 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接口的模型),当前仅支持读取在同内建模型路径的模型,示例 "test/yourmodel.onnx"
gpu <0/1/2> 指定显卡,0为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过4)

model_pth 所用的模型仅支持部分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, tf32=True, 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的条件下正常工作
gpu <0/1/2> 指定显卡,0为排序一号
gpu_t 整数 指定显卡线程数(最大不要超过4)
st_eng <True/False> 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率( 64x64 → res_max 的值)
res_opt 必填项 (如果使用静态引擎则不写,即填None)模型的首选优化分辨率,必须小于或等于 res_max 的值,示例 [1280, 720]
res_max 必填项 (如果使用静态引擎则不写,即填None)模型的最大支持的分辨率,示例 [1920, 1080]
ws_size 大于0的整数 约束显存(MiB),静态引擎的最小值为128(自动为动态引擎进行双倍处理),设为低于此数的值即为不限制

model_pth 所用的模型仅支持部分onnx格式,可在下方链接中找到个人收集的兼容的第三方模型。
如果你使用的是 mpv-lazy ,则内建模型的目录为 ...mpv-lazy/vapoursynth64/plugins/models/ ,请将要使用的模型放置于此路径下。

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

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

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

👉外部及历史模型备份


Clone this wiki locally