Skip to content

Commit 6cecdb7

Browse files
committed
fixed exporting to final cut pro for different speeds
1 parent 2666a3e commit 6cecdb7

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

Diff for: auto_editor/editor.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,23 @@ def fraction(inp, fps) -> str:
7070
if(isinstance(fps, float)):
7171
fps = Fraction(fps)
7272

73-
7473
frac = Fraction(inp, fps).limit_denominator()
7574
num = frac.numerator
7675
dem = frac.denominator
7776

7877
if(dem < 3000):
7978
factor = int(3000 / dem)
80-
print(3000 / dem)
81-
print(f'{num}/{dem}')
82-
num *= factor
83-
dem *= factor
84-
print(f'{num}/{dem}')
79+
80+
if(factor == 3000 / dem):
81+
num *= factor
82+
dem *= factor
83+
else:
84+
# Good enough but has some error that are impacted at speeds such as 150%.
85+
total = 0
86+
while(total < frac):
87+
total += Fraction(1, 30)
88+
num = total.numerator
89+
dem = total.denominator
8590

8691
return f'{num}/{dem}s'
8792

@@ -99,7 +104,6 @@ def fraction(inp, fps) -> str:
99104
with open(output, 'w', encoding='utf-8') as outfile:
100105

101106
frame_duration = fraction(1, fps)
102-
new_duration = fraction(chunks[len(chunks) - 1][1], fps)
103107

104108
outfile.write('<?xml version="1.0" encoding="UTF-8"?>\n')
105109
outfile.write('<!DOCTYPE fcpxml>\n\n')
@@ -121,7 +125,7 @@ def fraction(inp, fps) -> str:
121125
outfile.write('\t\t<event name="auto-editor output">\n')
122126
outfile.write(f'\t\t\t<project name="{name}">\n')
123127
outfile.write(formatXML(4,
124-
f'<sequence duration="{new_duration}" format="r1" tcStart="0s" tcFormat="NDF" '\
128+
f'<sequence format="r1" tcStart="0s" tcFormat="NDF" '\
125129
'audioLayout="stereo" audioRate="48k">',
126130
'\t<spine>')
127131
)
@@ -138,7 +142,7 @@ def fraction(inp, fps) -> str:
138142
outfile.write(formatXML(6, f'<asset-clip name="{name}" offset="0s" ref="r2"'\
139143
f' duration="{dur}" audioRole="dialogue" tcFormat="NDF"{close}>'))
140144
else:
141-
start = fraction(clip[0], fps)
145+
start = fraction(clip[0] / (clip[2] / 100), fps)
142146
off = fraction(last_dur, fps)
143147
outfile.write(formatXML(6,
144148
f'<asset-clip name="{name}" offset="{off}" ref="r2"'\
@@ -151,7 +155,6 @@ def fraction(inp, fps) -> str:
151155
frac_total = fraction(total_dur, fps)
152156
total_dur_divided_by_speed = fraction((total_dur) / (clip[2] / 100), fps)
153157

154-
155158
outfile.write(formatXML(6,
156159
'\t<timeMap>',
157160
'\t\t<timept time="0s" value="0s" interp="smooth2"/>',

0 commit comments

Comments
 (0)