2015-02-27 22 views
10

Metinlerle video oluşturmak için moviepy kullanmaya çalışıyorum. İlk önce, bir mesaj ve sonra bir tane daha göstermek istiyorum. Benim durumumda bir saniye "Köpek" i ve "Kedi Kedisi" ni göstermek istiyorum.Videoları nasıl üşüttürebiliriz?

moviepy.editor ithalat * dan

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) 

En fazla bu sonucu: Bunun için aşağıdaki kodu kullanabilirsiniz

Ben problem neden enter image description here

bilen var mı kedilerle mi?

cevap

12

Bir dosyaya yazılmak için, tüm çerçevelerin aynı boyuta sahip olması gerekir. Burada Köpek ile çerçeveler, videoyu bozan CatCat ile çerçeveler daha küçüktür.

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") 

bir ikinci çözelti tüm metin için aynı boyutta (genişlik, yükseklik) vermektir: bir birinci çözüm yöntemi "oluşturmak" concatenate_videoclips olarak bu her klipleri aynı boyutu verecektir kullanmaktır klipler:

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") 
İlgili konular