Изменить свойства текста кадр за кадром эффективно в MoviePy? - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь изменять произвольные части объекта клипа по кадрам для создания пользовательских эффектов. Я могу добиться этого с помощью следующего кода, но это крайне неэффективно.

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 - приведенный выше код предназначен для доказательства концепции произвольных свойств любого клипа (например, кернинга). текста, размер текста) в документах есть несколько примеров пользовательских эффектов, но даже те, которые кажутся ограниченными определенными классами. Кажется, я не могу найти способ написать хороший код для любой части любого объекта без значительного замедления программы - есть ли способ добиться этого эффективно?

...