VS中如何去除片源里的重复帧,却又不造成画音不同步?
dwing吧
全部回复
仅看楼主
level 8
Dex Dgin 楼主
源中有许多重复帧(在时域上不规则,不成周期),而我又希望用补帧达到最大平滑度。
这种情况下重复帧明显会影响补帧的平滑度。
现已用动态侦测标出重复帧。
重复帧给我标成了这样:(Y:0丨U:0丨V:0)
问题如下:
⒈如何删去标出的重复帧?难道要Trim手动一帧一帧去掉?不能用判别式对每帧进行判别吗?
⒉由于重复帧在时间上呈不规则排列,删去重复帧补帧后也必然造成画音不同步,这个该如何处理?
[乖]是萌新,望dalao不要缩写专有名字或函数名,我认不出来[乖]
2019年08月21日 14点08分 1
吧务
level 14
去除重复帧对于补帧并没有优化作用[挖鼻]
2019年08月21日 15点08分 2
有的
2020年02月23日 12点02分
@ReFromzero 我以为楼主说的是动画了……对动画来说比重复帧更严重的问题是“连贯性”太差
2020年02月23日 14点02分
level 14
没有现成的函数处理,得自己去实现。
我说一下我想到的一个思路:
首先,你已经把重复帧标出来了
然后,使用std.PlaneStats获取各个平面的最大值(最小值/平均值等)信息。
之后,使用std.FrameEval,将重复帧的信息写入到文本文件里,判断条件用之前获取到各平面最大值等,记住得记录帧号信息。
然后,完整跑一遍脚本(用vsedit的benchmark或vspipe),获得记录视频重复帧号的文本文件。
之后,新建个新脚本,使用std.SelectEvery(也可以用替代滤镜,有更高级的功能,但名字我记不清了,github找找应该能找到),利用之前记录下的重复帧号进行删帧。
之后,利用重复帧号,计算生成删帧后的vfr视频的tcv2。
至此,问题转换为vfr视频的插帧。
2019年08月21日 15点08分 3
[乖]请问能像我楼下这样写吗?还有记录帧数到文本文件应该怎么写?
2019年08月22日 15点08分
吧务
level 14
可以试一下ffmpeg的mpdecimate滤镜
2019年08月21日 16点08分 5
谢谢[乖]~
2019年08月23日 10点08分
level 8
Dex Dgin 楼主
[乖]问题一大堆(倒)
…………
def xj8rxd(n,f,clip,core):
  max_luma = f.props.PlaneStatsMax  #按下文这样写这个f 影响数值吗?如果影响应该如何去除?
  if max_luma==0:
    #应该如何记录帧数到文本文件?不能记录到列表吗?应该怎么写?
    return clip
  else:
    return clip
def xj8rxd2(clip,matrix_s=None):
  core = vs.get_core()
  avgclip=core.std.PlaneStats(clip, plane=0)
  clip2 = core.resize.Bilinear(clip, format=vs.RGB24)
  clip2 = core.std.FrameEval(clip2,functools.partial(xj8rxd, clip=clip2,core=core),avgclip)
  return clip
…………
src = xj8rxd2(src)
…………
2019年08月22日 15点08分 7
你可以拿list记录,这样甚至可以不用FrameEval。但你每次执行脚本,就必须先遍历视频的帧,效率低下。
2019年08月23日 02点08分
楼下有例子
2019年08月23日 02点08分
level 14
像这样写
2019年08月23日 02点08分 8
懂了~谢谢[乖]~
2019年08月23日 10点08分
level 1
楼主,能不能发我下软件,vs全名叫什么?
2020年02月23日 13点02分 9
VapourSynth
2020年02月23日 17点02分
level 1
话说楼主现在问题解决了吗
2020年02月24日 11点02分 10
还没,当时只学会把静态帧标记出来,还没学会如何删除,要冲高考了所以先丢一边了。不过最近有个补帧的新东西好像叫DIAN,据说***。
2020年03月26日 20点03分
1