找回密码
 立即注册
楼主: 孤雨独火

[MPV+] MPV_lazy 懒人包

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-16 20:01:47 | 显示全部楼层
本帖最后由 孤雨独火 于 2020-5-16 20:04 编辑
Rain 发表于 2020-5-16 19:06
楼主能不能同时发个去除python环境的压缩包
我自己有python环境
或者发布在GitHub上

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

使用道具 举报

3

主题

199

回帖

0

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
87112
Starlight 发表于 2020-5-16 20:52:34 | 显示全部楼层
本帖最后由 Starlight 于 2020-5-18 16:16 编辑

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

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


  2. # 绝大部分场景趋于理想
  3. # 画面快速平移时平行线有概率会烂,svpflow_alt 无此问题
  4. def svpflow(clip, fps, freq):
  5.     super_params = "{pel:2,gpu:1,scale:{up:2,down:4}}"
  6.     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}}]}"
  7.     smoothfps_params = "{rate:{num:" + str(freq) + \
  8.         ",den:1000,abs:true},algo:21,mask:{area:100},scene:{limits:{m1:1800,m2:3600,scene:5200,zero:100,blocks:45}}}"

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

  14.     return svp_smooth


  15. # 相较于 svpflow 会更加流畅一点,但烂帧肉眼可见增多
  16. def svpflow_alt(clip, fps, freq):
  17.     super_params = "{pel:2,gpu:1,scale:{up:2,down:4}}"
  18.     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}}]}"
  19.     smoothfps_params = "{rate:{num:" + str(freq) + \
  20.         ",den:1000,abs:true},algo:21,mask:{area:200},scene:{limits:{m1:1800,m2:3600,scene:5200,zero:100,blocks:45}}}"

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

  26.     return svp_smooth


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

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

  34.     return svp_smooth


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

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

  46.     return mv_smooth


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


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

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

  61.     clip = video_in
  62.     clip = clip.resize.Point(format=vs.YUV420P8, dither_type="random")
  63.     clip = clip_fit(clip, video_in_dw, video_in_dh, 1920, 1080)
  64.     clip = clip_interp(clip, fps, int(freq * 1000))
  65.     clip = core.std.AssumeFPS(clip, fpsnum=clip.fps_num, fpsden=clip.fps_den)
  66.     clip.set_output()
复制代码

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





svpflow2_vs64.zip

180.84 KB, 下载次数: 223

回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-16 22:02:36 | 显示全部楼层
Starlight 发表于 2020-5-16 20:52
可以考虑加几个svpflow-test.vpy了
这个脚本在不需要补帧的时候完全不工作,以屏幕刷新率为目标帧 ...

6666
不过这个Optical Flow问题很大,画面变形的频率更加高了,所以我不开
回复

使用道具 举报

0

主题

19

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
19929
strangeqaq 发表于 2020-5-16 22:03:44 | 显示全部楼层
9700KF用了ctrl+6,占用90%
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-17 12:59:28 | 显示全部楼层
strangeqaq 发表于 2020-5-16 22:03
9700KF用了ctrl+6,占用90%

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

使用道具 举报

17

主题

95

回帖

687

VC币

金牌会员

Rank: 6Rank: 6

积分
38158
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,没有作用,其他的似乎没看到和这个相关的修改项
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-18 01:11:06 | 显示全部楼层
cnlolicon 发表于 2020-5-18 00:28
想问一下,播放列表的loadfile功能用不了,打开播放器后按大“P”显示no additional files found,但是在载 ...

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

Snipaste_2020-05-18_01-10-51.jpg
回复

使用道具 举报

26

主题

298

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
54135
楚轩 发表于 2020-5-18 09:18:45 | 显示全部楼层
本帖最后由 楚轩 于 2020-5-18 11:51 编辑

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

使用道具 举报

17

主题

95

回帖

687

VC币

金牌会员

Rank: 6Rank: 6

积分
38158
cnlolicon 发表于 2020-5-18 10:33:57 | 显示全部楼层

感谢回复,看了下似乎理解错了loadfile的功能,用作者的另一个脚本mpv-filenavigator解决了载入问题
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 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。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表