Я пытаюсь изменять произвольные части объекта клипа по кадрам для создания пользовательских эффектов. Я могу добиться этого с помощью следующего кода, но это крайне неэффективно.
def make_text(clip, text=''):
duration = clip.duration
fps = clip.fps
frame_duration = math.floor(duration * fps)
text_frames = []
print(duration, fps, math.floor(duration * fps))
for t in range(frame_duration):
text_frame = TextClip(text, font='Arial', color='green', fontsize=120)
text_frame = text_frame.set_duration(t/ fps)
text_frame = text_frame.set_position(50 + t**2.67, 'center')
text_frames.append(text_frame)
text = concatenate(text_frames)
clip_text = CompositeVideoClip([clip, text])
return clip_text
Я понимаю, что могу более эффективно изменить положение текста, просто задав ему функцию для t - приведенный выше код предназначен для доказательства концепции произвольных свойств любого клипа (например, кернинга). текста, размер текста) в документах есть несколько примеров пользовательских эффектов, но даже те, которые кажутся ограниченными определенными классами. Кажется, я не могу найти способ написать хороший код для любой части любого объекта без значительного замедления программы - есть ли способ добиться этого эффективно?