![](/img/trans.png)
[英]How do I overlay a gizeh vector animation onto a moviepy video with transparency?
[英]Text moviepy and gizeh
我用moviepy和gizeh(感謝Zulko)編寫了一個小python程序。 它顯示在屏幕上並移動文本字符串“ my_text”,並且效果很好。
<!-- language: python -->
# Import everything needed to edit video clips
from moviepy.editor import *
import random
import gizeh
# RESOLUTION
W = 1280
H = 720
duration = 5
def make_frame(t):
surface = gizeh.Surface(W,H)
text = gizeh.text("my_text", fontsize = 80, fontfamily="Impact",
fill=(1,1,1), xy=(W/2, (min(340,-340+1000*t) )))
text.draw(surface)
return surface.get_npimage()
clip2 = VideoClip(make_frame, duration=duration)
clip2.write_videofile("my_video.avi",fps=12, codec='libx264')
我的編程技巧很差。 我想使用文本字符串[“ my_text1”,“ my_text2”,“ my_text3” ...]的列表,而不是僅使用一個字符串“ my_text”。 此外,這些列表元素應連續而不是同時出現在屏幕上。 有人可以引導我朝正確的方向解決嗎?
我尚未使用moviepy
,但我相信為make_frame
提供的t
參數指示已經過去了幾秒鍾。 如果我們有一個text_strings
列表想要在電影中平均散布(長5秒),我們希望將列表分成幾秒鍾:
def make_frame(t):
surface = gizeh.Surface(W,H)
current_text = text_strings[int((t*len(text_string))//5)]
text = gizeh.text(current_text, fontsize = 80, fontfamily="Impact",
fill=(1,1,1), xy=(W/2, (min(340,-340+1000*t) )))
text.draw(surface)
如果您希望它們中的每一個都從頂部開始,我建議將duration
設為函數范圍之外的(整數)變量。 要經歷len(text_string)
次移動,我們希望每次移動max_distance
一次。 這應該這樣做:
def make_frame(t):
surface = gizeh.Surface(W,H)
current_text = text_strings[int((t*len(text_string))//duration)]
text = gizeh.text(current_text, fontsize = 80, fontfamily="Impact",
fill=(1,1,1),
xy=(W/2, min(340,-340+max_distance*((t*len(text_string)/duration)%1)))
text.draw(surface)
丑陋的max_distance*((t*len(text_string)/duration)%1)
工作方式是這樣的: max_distance
顯然是最大值,因此讓我們進入括號內。 (t*len(text_string)/duration)
將在整個視頻過程中從0線性移動到len(text_string)
。 當您單獨查看t/duration
時,其原因很明顯: t/duration
的值是視頻經過的距離的一部分(例如,經過一半, t/duration = 0.5
)。 一個有趣的部分是%1
的使用。 可以在其他地方找到關於模運算符的入門知識,但是本質上,這樣做是每次我們獲得新值時,將比例從0重新“重新開始”。 最好在一個示例中看到:
t = 0
duration = 10
num_strings = 5
while t < 10:
print(round((t*num_strings/duration)%1, 3))
t += .1
請注意,該回合只是存在,因此您不會看到任何浮點錯誤。 希望現在更加清晰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.