有没有基于纯py/vs的 ddfi 抽帧脚本
dwing吧
全部回复
仅看楼主
level 10
填鸭X海角 楼主
动漫经常几帧才动一下,让普通插帧算法无处发力
发现了mr-z的ddfi这个想法,相当喜欢,但是观看前必须处理一遍比较糟心,希望能够写出一个纯py\vs版本的丢进mpv
去研究了一下他的代码发现用到了ffmpeg的mpdecimate,但是这在vapoursynth中并没有类似的filter
要么写个这样的插件要么用py实现类似的功能
Squirrel-RIFE的SVFI中有用python基于img实现抽帧的另一种方式,但是并不能找到如何将img转为videonode
2021年08月09日 14点08分 1
level 10
填鸭X海角 楼主
目前困境:基于c++的vapoursynth插件我还写不出来,但基于python实现我没找到办法把img转为videonode
当然可能我的思路被局限了。。。
其他的方案都可以,谢谢[玫瑰]
2021年08月09日 14点08分 2
有现成的就最好。。。
2021年08月09日 14点08分
吧务
level 14
vs可以取得视频帧的raw数据,不过我懒得搞,瞎糊一个能用就行[滑稽]也只是验证一下那样的思路效果如何
2021年08月09日 17点08分 3
吧务
level 14
不过抽帧这种事其实与vs的设计理念似乎是相违背的,因为你不跑完一遍不知道会有多少帧被抽掉,而vs对帧数的要求比较严格(但是既然有vfrtocfr这种plugin就说明应该也是可以实现的?或者是因为vfrtocfr从index和timestamps_v2文件里预先算好了帧数?)
2021年08月09日 20点08分 4
吧务
level 14
如果要用现有的工具,我只能想到跑两个脚本的方法:先跑一遍重复帧检测,保存一个去除帧序号列表和一个保留帧时间戳列表,然后第二个脚本使用已有的两个列表进行处理。
解决方法可以是:写一个plugin,通过某种hack达成目标效果;或者使vs可以有一个基于时间戳的处理方式(vs虽然有每帧的时间戳但是目前看来并没有什么x用
2021年08月09日 20点08分 5
吧务
level 14
py实现的话我有一个想法是
last=clip[0]
for i in clip[1:]:
检测dup
if not dup:
last+=i
else:
pass
怎么限制连续去除帧数还没啥想法,这样有个缺点是这样做只能单线程
2021年08月09日 20点08分 6
level 10
填鸭X海角 楼主
这样啊。。。去看波vfr2cfr的东西
想要当作mpv的滤镜,这样的话video_in是unseekable的(?)
似乎slice需要seekable clip,我现在在用clip.frames()+vsutil.cilps.frame2clip()绕过slice,不知道有没有好点的方法
还是我的slice姿势不对……?
2021年08月10日 02点08分 7
frames虽然不会在pipe时报错,但似乎这是个init阶段导致必须处理完才能开始oput。。。
2021年08月10日 04点08分
frames虽然不会在pipe时报错,但似乎这是个init阶段导致必须处理完才能开始oput。。。
2021年08月10日 04点08分
主要难点是在于如何在vs里面无规律地删掉指定的帧[笑尿] 重复帧检测可以有很多方法了
2021年08月10日 06点08分
@Mr-Z♂ (而且还得是实时的,不能2pass
2021年08月10日 06点08分
level 10
填鸭X海角 楼主
目前想到了一种很basic的方式无规律删除,还没有处理边界问题
会有
使用std.ModifyFrame
代码github.com/syniox/ddfi-vapoursynth
2021年08月10日 07点08分 8
1