孤雨独火 发表于 2020-5-16 20:01:47

本帖最后由 孤雨独火 于 2020-5-16 20:04 编辑

Rain 发表于 2020-5-16 19:06
楼主能不能同时发个去除python环境的压缩包
我自己有python环境
或者发布在GitHub上

我用的都是便携包,不影响你主机path的py,之所以预设是考虑到了vp和py相互吃版本的特别情况

Starlight 发表于 2020-5-16 20:52:34

本帖最后由 Starlight 于 2020-5-18 16:16 编辑

可以考虑加几个svpflow-test.vpy了{:4_684:}
这个脚本在不需要补帧的时候完全不工作,以屏幕刷新率为目标帧率,会降低1920x1080以上视频的分辨率(渣机4K补帧带不动)

四种补帧方法
    svpflow 同现 svpflow-anime
    svpflow_alt 对现 svpflow-anime 做小修改得来
    svpflow_nvof 使用N卡Optical Flow的svp(需要20系显卡,本人无测试条件,按原先svpflow-anime脚本推导得来)
    mvtools 同现 mvtools-highimport vapoursynth as vs


# 绝大部分场景趋于理想
# 画面快速平移时平行线有概率会烂,svpflow_alt 无此问题
def svpflow(clip, fps, freq):
    super_params = "{pel:2,gpu:1,scale:{up:2,down:4}}"
    analyse_params = "{block:{w:32,h:32,overlap:2},main:{levels:4,search:{type:4,distance:-8,coarse:{type:4,distance:-5,bad:{range:0}}},penalty:{plevel:1.3,pzero:110,pnbour:75}},refine:[{thsad:200,search:{type:4,distance:2}}]}"
    smoothfps_params = "{rate:{num:" + str(freq) + \
      ",den:1000,abs:true},algo:21,mask:{area:100},scene:{limits:{m1:1800,m2:3600,scene:5200,zero:100,blocks:45}}}"

    svp_super = core.svp1.Super(clip, super_params)
    svp_analyse = core.svp1.Analyse(
      svp_super["clip"], svp_super["data"], clip, analyse_params)
    svp_smooth = core.svp2.SmoothFps(
      clip, svp_super["clip"], svp_super["data"], svp_analyse["clip"], svp_analyse["data"], smoothfps_params, src=clip, fps=fps)

    return svp_smooth


# 相较于 svpflow 会更加流畅一点,但烂帧肉眼可见增多
def svpflow_alt(clip, fps, freq):
    super_params = "{pel:2,gpu:1,scale:{up:2,down:4}}"
    analyse_params = "{block:{w:32,h:32,overlap:2},main:{levels:0,search:{type:4,distance:-8,coarse:{type:4,distance:-6,bad:{range:0}}},penalty:{plevel:1.3,pzero:110,pnbour:75}},refine:[{thsad:400,search:{type:4,distance:2}}]}"
    smoothfps_params = "{rate:{num:" + str(freq) + \
      ",den:1000,abs:true},algo:21,mask:{area:200},scene:{limits:{m1:1800,m2:3600,scene:5200,zero:100,blocks:45}}}"

    svp_super = core.svp1.Super(clip, super_params)
    svp_analyse = core.svp1.Analyse(
      svp_super["clip"], svp_super["data"], clip, analyse_params)
    svp_smooth = core.svp2.SmoothFps(
      clip, svp_super["clip"], svp_super["data"], svp_analyse["clip"], svp_analyse["data"], smoothfps_params, src=clip, fps=fps)

    return svp_smooth


# NVIDIA Optical Flow
def svpflow_nvof(clip, fps, freq):
    smoothfps_params = "{rate:{num:" + \
      str(freq) + ",den:1000,abs:true},algo:21}"

    crop_clip = clip.std.Crop(0, 0, 0, 2)
    svp_smooth = core.svp2.SmoothFps_NVOF(
      clip, smoothfps_params, nvof_src=crop_clip, src=clip, fps=fps)

    return svp_smooth


# mvtools-high
def mvtools(clip, fps, freq):
    clip = core.std.AssumeFPS(clip, fpsnum=fps, fpsden=1)

    mv_super = core.mv.Super(clip, pel=2, sharp=2, rfilter=4,
                           hpad=16, vpad=8, levels=0)
    mv_vec_b = core.mv.Analyse(mv_super, blksize=32, blksizev=16, overlap=16, overlapv=8, levels=0,
                               isb=True, search=3, searchparam=0, pelsearch=3, badrange=-1, badsad=10000)
    mv_vec_f = core.mv.Analyse(mv_super, blksize=32, blksizev=16, overlap=16, overlapv=8, levels=0,
                               isb=False, search=3, searchparam=0, pelsearch=3, badrange=-1, badsad=10000)
    mv_smooth = core.mv.BlockFPS(clip, mv_super, mv_vec_b, mv_vec_f,
                                 num=freq, den=1000, mode=2, ml=1020.0, thscd1=16320, thscd2=255)

    return mv_smooth


# scale-down
def clip_fit(clip, clip_w, clip_h, fit_w, fit_h):
    ratio = min(fit_w / clip_w, fit_h / clip_h)
    if (ratio < 1):
      clip = clip.resize.Lanczos(
            width=int(clip_w * ratio), height=int(clip_h * ratio))
    return clip


# 补帧方法 (svpflow / svpflow_alt / svpflow_nvof / mvtools)
clip_interp = svpflow
fps = container_fps if (container_fps > 0.1) else 24
freq = display_fps if (display_fps > 0.1) else 60

if (fps < freq):
    core = vs.core
    core.max_cache_size = 8192

    clip = video_in
    clip = clip.resize.Point(format=vs.YUV420P8, dither_type="random")
    clip = clip_fit(clip, video_in_dw, video_in_dh, 1920, 1080)
    clip = clip_interp(clip, fps, int(freq * 1000))
    clip = core.std.AssumeFPS(clip, fpsnum=clip.fps_num, fpsden=clip.fps_den)
    clip.set_output()

另外附上版本号高了0.0.0.001的svpflow2_vs64.dll





孤雨独火 发表于 2020-5-16 22:02:36

Starlight 发表于 2020-5-16 20:52
可以考虑加几个svpflow-test.vpy了
这个脚本在不需要补帧的时候完全不工作,以屏幕刷新率为目标帧 ...

6666
不过这个Optical Flow问题很大,画面变形的频率更加高了,所以我不开{:13_959:}

strangeqaq 发表于 2020-5-16 22:03:44

9700KF用了ctrl+6,占用90%{:4_684:}

孤雨独火 发表于 2020-5-17 12:59:28

strangeqaq 发表于 2020-5-16 22:03
9700KF用了ctrl+6,占用90%

intel这边已经实锤跑mvtools就是垃圾了,有人测试下3700x一点压力都没有{:13_959:}

cnlolicon 发表于 2020-5-18 00:28:27

想问一下,播放列表的loadfile功能用不了,打开播放器后按大“P”显示no additional files found,但是在载入一个视频后小'p'是可以保存M3U播放列表到默认的portable_config\playlists文件夹下的,是有什么参数需要修改才能开启loadfile功能吗?尝试修改了playlistmanager.conf中的show_playlist_on_fileload为1或2,没有作用,其他的似乎没看到和这个相关的修改项

孤雨独火 发表于 2020-5-18 01:11:06

cnlolicon 发表于 2020-5-18 00:28
想问一下,播放列表的loadfile功能用不了,打开播放器后按大“P”显示no additional files found,但是在载 ...

https://github.com/jonniek/mpv-playlistmanager


楚轩 发表于 2020-5-18 09:18:45

本帖最后由 楚轩 于 2020-5-18 11:51 编辑

请问补帧到59.94(mvtools标准版) 59,997 (mvtools测试版)和稳定60(svpflow)有什么区别吗 我的显示器刷新是59.997{:4_675:}{:4_686:}

cnlolicon 发表于 2020-5-18 10:33:57

孤雨独火 发表于 2020-5-18 01:11
https://github.com/jonniek/mpv-playlistmanager
感谢回复,看了下似乎理解错了loadfile的功能{:11_830:},用作者的另一个脚本mpv-filenavigator解决了载入问题

孤雨独火 发表于 2020-5-18 11:50:50

楚轩 发表于 2020-5-18 09:18
请问补帧到59.94(mpvtools标准版) 59,997 (mpvtools测试版)和稳定60(svpflow)有什么区别吗 我的显示 ...

为啥你老是打错mvtools...
这几个帧速率脚本都是锁60的没有区别,实际在60hz的显示上为啥不能达标我也不知道~~
视频帧速率和显示器刷新率不成整数匹配的时候。。。这个算播放器常识吧,影响不大,欠的frame就repeat,多的就drop。
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: [MPV+] MPV_lazy 懒人包