NAZOBASE 快速开发框架说明

F@NAZOrip
F@NAZOrip 2017年11月21日
  • 在其它设备中阅读本文章
  • 测试版框架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 #异形变换mask
        aamask
        ringmask
        holomask #不同逻辑产生的mask
        mainmask #主体mask1
        mainmask2 #主体mask2
        chromamask #色度mask3
    Class aa:
        fullaa #多核心超采样抗锯齿
    Class enhance:
        coreenh #核心增强
        textenh #纹理增强
        usm #基于高斯模糊的USM
    Class dering:
        moddering
    Class degrain:
        bm3dsld #bm3d slight degrain
        knlm
        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视频流。理论上可以用来合并任意文件,或者生产一些会被杀毒软件查杀的东西

    xem chi tiết
    xem chi tiết  2018-08-07, 22:37

    I have been surfing on-line greater than three hours nowadays,
    yet I never discovered any attention-grabbing article like yours.

    It's pretty value sufficient for me. In my view, if all site owners and bloggers made just right content as you
    probably did, the internet will probably be much more helpful than ever before.