Skip to content

3_K7sfunc

hooke007 edited this page Apr 14, 2023 · 136 revisions

K7sfunc mpv专用的vs包装器

主要特点

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

可用模块

大致分为五个组:“格式控制” “超分” “运动补偿” “降噪” “其它”

每组可用的具体模块说明跳转后方的详细介绍。

使用引导

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

创建自定义vpy脚本

示例如下 ——

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

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

from k7sfunc import FMT_CTRL, MVT_LQ

第四行将 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)

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

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

模块说明

对应版本 0.0.5

NV 后缀的为nvidia显卡专用。各模块的 input 都是必填项,其它见各自的介绍。示例即默认值。

格式控制


FMT_CTRL

FMT_CTRL(input=clip, h_max=None, h_ret=False, fmt_pix=None)

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

  • h_max (可选)整数值。如果填写则表示检测的最大高度
  • h_ret 当为 True 时,中断后续执行。否则转换输入源到 h_max 指定的高度
  • fmt_pix (可选)填写vs的像素格式,例如 vs.YUV420P8。如果填写则转换输入源到指定的格式

P.S. 还可以简易的使用 FMT_CTRL(input=clip) 来只确保输入源限制在YUV10位内


FPS_CHANGE

FPS_CHANGE(input=clip, fps_in=24.0, fps_out=60.0)

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

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

FPS_CTRL

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

用于检测或限制帧率。

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

超分


ACNET_STD

ACNET_STD(input=clip, nr=1, nr_lv=1, gpu=0, gpu_m="opencl")

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

  • nr <0|1> 是否降噪,0为禁用
  • nr_lv <1|2|3> 降噪强度
  • gpu <0|1|2> 指定显卡,0为排序一号
  • gpu_m <"opencl"|"cuda"> 选择其中一种显卡加速模式

CUGAN_NV

CUGAN_NV(input=clip, lt_hd=False, nr_lv=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)

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

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

ESRGAN_NV

ESRGAN_NV(input=clip, lt_hd=False, scale=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)

固定放大整数倍(只适合Anime风格)。

  • lt_hd 是否对超过HD分辨率(720P)的源进行处理
  • scale <1|2> 放大倍率,1为不放大
  • gpu <0|1|2> 指定显卡,0为排序一号
  • gpu_t <1|2|3> 指定显卡线程数
  • st_eng 是否使用静态引擎(需要对不同分辨率的源各进行预处理);动态引擎自适应不同分辨率(64²→DCI2K)
  • ws_size 大于0的整数。约束显存(MiB),静态引擎的最小值为128(动态引擎自动双倍),设为低于此数的值即为不限制

NNEDI3_STD

NNEDI3_STD(input=clip, edi_nsize=4, edi_nns=3, cpu=True, gpu=-1)

固定放大两倍。

  • edi_nsize <0|4> 分别对应 8x6 8x4
  • edi_nns <2|3|4> 分别对应 64 128 256
  • cpu 使用cpu还是gpu
  • gpu <-1|0|1|2> 指定显卡,0为排序一号,-1为自动

WAIFU_NV

WAIFU_NV(input=clip, lt_hd=False, nr_lv=1, scale=-1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)

固定放大整数倍(只适合Anime风格)。

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

运动补偿


MVT_LQ

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

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

  • fps_in 浮点值。指定输入源的帧率
  • fps_out 浮点值。指定输出帧率
  • recal 是否使用二次分析
  • block 是否使用Block模式

MVT_STD

MVT_STD(input=clip, fps_in=23.976, fps_out=59.940)

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

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

MVT_POT

MVT_POT(input=clip, fps_in=23.976, fps_out=59.940)

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

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

RIFE_STD

RIFE_STD(input=clip, sc_mode=1, stat_th=60.0, fps_num=2, fps_den=1, gpu=0, gpu_t=2, st_eng=False, ws_size=0)

补帧至任意倍率。

  • sc_mode <0|1|2> 场景切换检测的模式,0为禁用
  • stat_th 浮点值。静止帧的检测阈值,不对该类帧进行补偿计算
  • fps_num 整数
  • fps_den 整数。fps_num/fps_den 的值即帧率倍数(计算结果可为浮点)
  • gpu <0|1|2> 指定显卡,0为排序一号
  • gpu_t <1|2|3> 指定显卡线程数

RIFE_NV

RIFE_NV(input=clip, lt_d2k=False, sc_mode=1, fps_num=2, t_tta=False, ext_proc=True, gpu=0, gpu_t=2)

补帧至固定整数倍。

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

降噪


BM3D_NV

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

降噪。

  • 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

CCD_STD(input=clip, nr_lv=20.0)

降低彩噪。

  • nr_lv 浮点值。降噪强度

FFT3D_STD

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

降噪。

  • 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

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

降噪。

  • 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

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

降噪。

  • blur_m <0|1|2> 分离模式。0为不使用
  • frame_num 整数。降噪帧数
  • rad_sw 整数。搜索窗口半径
  • rad_snw 整数。近邻窗口半径
  • nr_lv 浮点值。降噪强度
  • gpu <0|1|2> 指定显卡,0为排序一号
  • gpu_t <1|2|3> 指定显卡线程数

其它


AA_NV

AA_NV(input=clip, plane=[0], gpu=-1, gpu_t=2)

抗锯齿。(存在问题:不能跳转,不可撤销。)

  • plane 整数组。抗锯齿处理的平面,全平面即 [0, 1, 2]
  • gpu <-1|0|1|2> 指定显卡,0为排序一号,-1为自动
  • gpu_t <1|2|3> 指定显卡线程数

DEBAND_STD

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

去色带。

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

DEINT_STD

DEINT_STD(input=clip, cpu=True, gpu=-1, deint_m=1)

反交错。

  • cpu 使用cpu还是gpu
  • gpu <-1|0|1|2> 指定显卡,0为排序一号,-1为自动
  • deint_m <1|2|3> 去隔行的执行核心,分别对应 bwdif yadifmod tdm

IVTC_STD

IVTC_STD(input=clip, fps_in=23.976, ivtc_m=1)

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

  • fps_in 浮点值。指定输入源的帧率
  • ivtc_m <1|2> ivtc模式

STAB_STD

STAB_STD(input=clip)

镜头防抖


STAB_HQ

STAB_HQ(input=clip)

镜头防抖


Clone this wiki locally