NAZOBASE 快速开发框架说明

NAZOrip@F
NAZOrip@F 2017年11月20日
  • 测试版框架nazobase.py ,出于加快方案设计速度的角度开发。
  • 其前身为,为避免重复代码的考量制作的代码库NAZOfunc。
  • 重新确定设计思路后,经历过一次较大规模的版本覆写与更新。
  • 由于本体开发也以速度优先,没有详细的文档与异常排查,故在本文中记录组件使用方法,供大家需要时查阅。
  • 随时更新,最新版可以在群共享内下载。

使用范例:

#放置于site-packages后
import vapoursynth as vs
import nazobase as nazo
from nazobase import mask,gp,dep,check

core = vs.core

file = 'test.mkv'
src16,src8 = nazo.dataloader(file)
aa = nazo.aa.fullaa(gp(src16,0))
mask = dep(mask.aamask(src8),10)
aaed = core.std.MaskedMerge(src16,aa,mask,[0])

check(src16,aaed).set_output()

# 以上代码完成:加载指定片源后,将亮度平面使用eedi2超采样,进行mask保护后混合
# 之后与16bit源剪辑交错输出,用以对比查看效果。

目录

 1、主体规划
    快捷功能区:
        dataloader #源加载器
        dep #位深调整
        gp #获取平面
        check #对比工具
        diff #差异工具
        doc #说明文档
    Class Mask:
        kirsch
        kirsch2
        textmask #文字mask
        nazolmask #亮度mask
        dbmask #haf菱形变换mask
        aamask
        ringmask
        holomask #不同逻辑产生的mask
        mainmask #主体mask1
        mainmask2 #主体mask2
        chromamask #主体mask3
    Class aa:#待完善
        fullaa #eedi2超采样
    Class enhance:#待完善
        coreenh #核心增强
        textenh #纹理增强
        usm
    Class dering:#待完善
        moddering
    Class degrain:#待完善
        wf2x
 2、外部实现
    BitrateViewer:动态扫描与比特率曲线
    GetChapters:mpls章节提取器
    视频流合并工具

说明

1.dataloader(str 'filename')

import nazobase as nazo(下略)
src10,src8,src16 = nazo.dataloader('filename')

    为了方便在不同源影片之间切换开发的数据加载器。会自动识别调用语句中的要求,为每个要求返回指定格式的影片剪辑,即例如,若调用为src16 = dataLoader()则返回一个16bit,若调用为src8,src16 = dataloader()则返回一个8bit以及一个16bit。内部搜索调用语句后进行字符串处理,并不健壮,支持8、10、16三种位深。

2.dep(clip ,int depth)

from nazobase import dep
res16 = dep(res8,16)

    内部实现:dep = mvf.Depth。只是为了少打几个字。

3.check(clipa ,[clipb ,clipc....])

from nazobase import check
check(src16,src8,src10,mask).set_output()

    交错检查函数,功能为将输入的若干影片,在内部转换为clipa的格式,并使用std.Interleave()交错输出。输出时左上角会使用text.Text()标记剪辑名。

4.gp(clip,int plane)

from nazobase import gp
src16y = gp(src16,0)

    获取单个平面。chroma平面会被拉伸至luma平面相同大小。

5.diff(clipa ,clipb ,[int strength = 8])

blur = core.rgvs.RemoveGrain(src16,20)
diff = nazo.diff(src16,blur)

    内部实现:std.Expr([clipa,clipb],['x y - abs {strength} *'])。预先会使用check将剪辑调整为统一格式,支持不同格式自动做差。

5.doc()

nazo.doc()

    内部实现:
    import webbrowser
    webbrowser.open('www.nazorip.site/archives/37/')

待续


SP01:BitrateViewer

自动化的比特率曲线查看器,如果输入视频文件带有章节信息,会另外生成一个单独分割出OP和ED(以及将视频分为若干段)的表单。
使用方法:下载群共享迷之杂物BitrateViewer.rar。解压后将MediaInfo.dll和MediaInfoDLL3.py放到python目录下site-package文件夹内,将ffmpeg可识别的视频文件(诸如AVC/HEVCMKV/MP4等)拖拽进入BitrateViewer.cmd即可。扫描一集动画通常需要几十秒到若干分钟不等,扫描完成后会在黑框中得到提示和分段,此时查看视频所在目录会发现该目录下生成两个.csv文件,其中一个(*_ffordered.csv)表示视频逐帧完整动态信息(由于进行了商编码实际上显示的是帧空间),另一个(*_Bitrate Viewer.csv)按照视频帧率将视频帧大小以秒为单位累加(即得到每秒的比特率),用excel将其打开,利用excel自带的图表功能即可查看比特率曲线。(效果图如组教学6所示)

*注,如果运行过程中出现"python 不是内部或外部命令"提示,说明python未被添加到系统环境变量导致不能正常识别,请参考到百度搜索到的解决方案(python 不是内部或外部命令\如何将python添加到环境变量)。

SP02:章节提取器

使用方法同上(不依赖动态扫描,不需要预先配置ffmpeg),群共享内下载GetChapters.rar,将解压后的文件放置于同一目录,将原盘中对应的mpls文件(或带有章节的视频文件)拖入getchapters.cmd,即可在文件目录下生成一个xml格式的章节信息文件。

SP03:视频流合并工具

以往用来合并视频流总是依赖于封装工具诸如mkvtools或者mp4box等等,为了应对一些除此之外的特殊情况干脆写个简单工具。这是一个单纯的二进位字节连接工具,使用方法是选中若干待合并文件并拖入该exe即可,它会在内部按文件名进行排序并输出一个连接后的文件,可以用来连接所有h264、h265等raw视频流。理论上可以用来合并任意文件,或者生产一些会被杀毒软件查杀的东西