如何解决使用Moviepy的带有背景图像的文字效果
我需要使用Moviepy在背景图片上添加文字效果,但是由于某种原因它无法正常工作。我正在使用moviepy,并且有一个jpg背景图像文件。这导致黑色背景视频。这是代码
import numpy as np
from moviepy.editor import *
from moviepy.video.tools.segmenting import findObjects
# WE CREATE THE TEXT THAT IS GOING TO MOVE,WE CENTER IT.
screensize = (720,460)
txtClip = TextClip('Cool effect',color='white',font="Amiri-Bold",kerning = 5,fontsize=100)
image_clip = ImageClip("newback.jpg",duration=5)
cvc = CompositeVideoClip( [image_clip,txtClip.set_pos('center')],size=screensize)
# helper function
rotMatrix = lambda a: np.array( [[np.cos(a),np.sin(a)],[-np.sin(a),np.cos(a)]] )
def arrive(screenpos,i,nletters):
v = np.array([-1,0])
d = lambda t : max(0,3-3*t)
return lambda t: screenpos-400*v*d(t-0.2*i)
# WE USE THE PLUGIN findObjects TO LOCATE AND SEPARATE EACH LETTER
letters = findObjects(cvc) # a list of ImageClips
# WE ANIMATE THE LETTERS
def moveLetters(letters,funcpos):
return [ letter.set_pos(funcpos(letter.screenpos,len(letters)))
for i,letter in enumerate(letters)]
clips = [ CompositeVideoClip( moveLetters(letters,funcpos),size = screensize).subclip(0,5)
for funcpos in [arrive] ]
# WE CONCATENATE EVERYTHING AND WRITE TO A FILE
final_clip = concatenate_videoclips(clips)
final_clip.write_videofile('coolTextEffects.avi',fps=25,codec='mpeg4')
解决方法
你可以试试这个:
import numpy as np
from moviepy.editor import *
from moviepy.video.tools.segmenting import findObjects
# WE CREATE THE TEXT THAT IS GOING TO MOVE,WE CENTER IT.
screensize = (720,460)
txtClip = TextClip('Cool effect',color='white',font="Amiri-Bold",kerning = 5,fontsize=100)
#image_clip = ImageClip("newback.jpg",duration=5)
#cvc = CompositeVideoClip( [image_clip,txtClip.set_pos('center')],# size=screensize)
# helper function
rotMatrix = lambda a: np.array( [[np.cos(a),np.sin(a)],[-np.sin(a),np.cos(a)]] )
def arrive(screenpos,i,nletters):
v = np.array([-1,0])
d = lambda t : max(0,3-3*t)
return lambda t: screenpos-400*v*d(t-0.2*i)
# WE USE THE PLUGIN findObjects TO LOCATE AND SEPARATE EACH LETTER
#letters = findObjects(cvc) # a list of ImageClips
letters = findObjects(txtClip)
# WE ANIMATE THE LETTERS
def moveLetters(letters,funcpos):
return [ letter.set_pos(funcpos(letter.screenpos,len(letters)))
for i,letter in enumerate(letters)]
clips = [ CompositeVideoClip( moveLetters(letters,funcpos),size = screensize).subclip(0,5)
for funcpos in [arrive] ]
# WE CONCATENATE EVERYTHING AND WRITE TO A FILE
final_clip = concatenate_videoclips(clips)
image_clip = ImageClip("image.jpg",duration=final_clip.duration)
final_clip = CompositeVideoClip([image_clip,final_clip.set_pos('center')])
final_clip.write_videofile('coolTextEffects.avi',fps=25,codec='mpeg4')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。