[英]How to concatenate videos in moviepy?
我正在嘗試使用moviepy生成帶有文本的視頻。 首先,我想顯示一條消息,然后顯示另一條消息。 在我的情況下,我希望顯示“狗”一秒鍾而不是“貓貓”。 為此,我使用以下代碼:
來自moviepy.editor import *
def my_func(messeges):
clips = {}
count = 0
for messege in messeges:
count += 1
clips[count] = TextClip(messege, fontsize=270, color='green')
clips[count] = clips[count].set_pos('center').set_duration(1)
clips[count].write_videofile(str(count) + '.avi', fps=24, codec='mpeg4')
videos = [clips[i+1] for i in range(count)]
video = concatenate(videos)
video.write_videofile('test.avi', fps=24, codec='mpeg4')
video = VideoFileClip('test.avi')
video.write_gif('test.gif', fps=24)
if __name__ == '__main__':
ms = []
ms += ['Dog']
ms += ['Cat Cat']
my_func(ms)
這是我得到的結果:
有誰知道為什么我有貓的問題?
要寫入文件,所有幀必須具有相同的大小。 在這里,使用Dog的框架比使用CatCat的框架小,這會破壞視頻。 第一種解決方案是在concatenate_videoclips中使用“compose”方法,這將為所有剪輯提供相同的大小:
import moviepy.editor as mp
messages = ["Dog", "Cat", "Duck", "Wolf"]
clips = [ mp.TextClip(txt, fontsize=170, color='green').set_duration(1)
for txt in messages ]
concat_clip = mp.concatenate_videoclips(clips, method="compose")
concat_clip.write_videofile("texts.mp4")
第二種解決方案是為所有文本剪輯提供相同的大小(寬度,高度):
import moviepy.editor as mp
messages = ["Dog", "Cat", "Duck", "Wolf"]
clips = [ mp.TextClip(txt, fontsize=170, color='green', size=(500,300))
.set_duration(1)
for txt in messages]
concat_clip = mp.concatenate_videoclips(clips)
concat_clip.write_videofile("texts.mp4")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.