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