python - 在 MoviePy 中有效地逐帧更改文本属性?
问题描述
我试图能够逐帧更改剪辑对象的任意部分以制作自定义效果。我可以使用以下代码来实现这一点,但效率极低。
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 - 上面的代码旨在证明任何剪辑的任意属性(如文本字距调整、文本大小)的概念证明文档中的一些自定义效果示例,但即使是那些似乎也仅限于某些类。我似乎无法找到一种方法为任何对象的任何部分编写好的代码,而不会大大降低程序的速度 - 有没有办法有效地实现这一点?
解决方案
推荐阅读
- apache-spark - persist(StorageLevel.MEMORY_AND_DISK) 如何在 Spark 3.1 中使用 Java 实现
- python - 如何在python中导入文件?
- python - 从一个目录到另一个目录查找
- jenkins - groovy:: java.lang.IllegalArgumentException: 预期命名参数但得到
- laravel - Laravel 使用关系过滤查询结果
- excel - 从特定联系人(发件人)和 Outlook 中不同收件箱地址的电子邮件中提取 pdf 文件
- javascript - 如何使用 InAppBrowser react-native (android) 防止重复使用先前会话的 cookie
- plpgsql - 语法高亮 plpgsql 函数的工具
- php - PHP Post变量保持为空
- java - 当 FetchType=Lazy 时 SpringBoot Test JPA 出现“无会话”异常