don't create consecutive cuts with a length of less than 3 frames
This commit is contained in:
parent
b19b7474a0
commit
eff73f11fe
1 changed files with 9 additions and 1 deletions
|
@ -229,6 +229,7 @@ class Timelines():
|
||||||
self.detect_cuts = True
|
self.detect_cuts = True
|
||||||
self.cuts = [0]
|
self.cuts = [0]
|
||||||
self.no_cuts = []
|
self.no_cuts = []
|
||||||
|
self.short_cut = None
|
||||||
self.cut_frames = []
|
self.cut_frames = []
|
||||||
self.max_cut_len = 15000 # 10 minutes
|
self.max_cut_len = 15000 # 10 minutes
|
||||||
self.max_distance = 64 * math.sqrt(3 * pow(255, 2))
|
self.max_distance = 64 * math.sqrt(3 * pow(255, 2))
|
||||||
|
@ -395,10 +396,17 @@ class Timelines():
|
||||||
is_cut = False
|
is_cut = False
|
||||||
self.previous_distance = 0
|
self.previous_distance = 0
|
||||||
else:
|
else:
|
||||||
|
if self.short_cut and frame_i - self.short_cut > 2:
|
||||||
|
self.cuts.append(self.short_cut)
|
||||||
|
self.short_cut = None
|
||||||
distance = self._get_distance(self.previous_frame_data, frame_data)
|
distance = self._get_distance(self.previous_frame_data, frame_data)
|
||||||
is_cut = distance > 0.08 or (distance > 0.04 and abs(distance - self.previous_distance) > 0.04)
|
is_cut = distance > 0.08 or (distance > 0.04 and abs(distance - self.previous_distance) > 0.04)
|
||||||
if is_cut:
|
if is_cut:
|
||||||
self.cuts.append(self.frame_i)
|
if frame_i - (0 if not self.cuts else self.short_cut or self.cuts[-1]) < 3:
|
||||||
|
is_cut = False
|
||||||
|
self.short_cut = frame_i
|
||||||
|
else:
|
||||||
|
self.cuts.append(self.frame_i)
|
||||||
elif len(self.cut_frames) == self.max_cut_len:
|
elif len(self.cut_frames) == self.max_cut_len:
|
||||||
is_cut = True
|
is_cut = True
|
||||||
self.cuts.append(self.frame_i)
|
self.cuts.append(self.frame_i)
|
||||||
|
|
Loading…
Reference in a new issue