CodeGym /Java Adesua /Python SELF TW /視頻中的元素覆蓋與動畫:創建移動文字與圖形

視頻中的元素覆蓋與動畫:創建移動文字與圖形

Python SELF TW
等級 48 , 課堂 0
開放

1. 添加文字及其移動動畫

MoviePy 是一個超棒的工具,可以把沉悶的視頻變成電影級大作。或者至少能讓視頻裡有移動的文字和圖形。先來了解如何在視頻上添加靜態元素,然後進入魔法世界——動畫。

添加文字及其移動動畫

在 MoviePy 中,使用 TextClip 來創建文本,設置文字、字體、顏色和其他參數。然後通過 set_position() 方法可以讓文字在屏幕上移動。

橫向移動的文字

在這個例子中,文字將從左向右移動。


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# 加載主視頻
video = VideoFileClip("sample_video.mp4")

# 創建文字剪輯
text = TextClip("移動的文字", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# 將文字叠加到視頻上
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

這裡:

  • TextClip("移動的文字", fontsize=50, color='white') 創建一個白色文字,字體大小為 50。
  • set_position(lambda t: (int(200 * t), 100)) 創建動畫,文字以固定速度向右移動。
  • CompositeVideoClip([video, text]) 組合文字剪輯和主視頻。

改變運動方向的文字動畫

你還可以通過水平和垂直運動的組合來創建更複雜的文字軌跡。

沿對角線移動的文字

在這個例子中,文字將沿對角線移動。


text = TextClip("對角線文字", fontsize=50, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_diagonal_text.mp4", fps=24)

這裡:

  • 函數 set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) 創建一個對角線運動,結合文字的水平和垂直位移。

具有出現與消失效果的文字動畫

若希望文字出現與消失,可以根據時間改變其透明度。MoviePy 提供了 fadein()fadeout() 方法來實現這種效果。

平滑的文字出現與消失效果


# 擁有平滑出現與消失效果的文字
text = TextClip("出現的文字", fontsize=40, color='blue')
text = text.set_position(('center', 'bottom')).set_duration(5).fadein(1).fadeout(1)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_fade_text.mp4", fps=24)

這裡:

  • fadein(1)fadeout(1) 分別為文字在開始和結束時增加1秒的平滑出現與消失效果。

2. 插入圖形元素

添加圖像及其移動動畫

除了文字,MoviePy 也可以利用 ImageClip 將圖像添加到視頻中。你可以設置其軌跡並通過 set_position() 改變位置來實現動畫效果。

從下向上移動的 logo 動畫


from moviepy.editor import VideoFileClip, ImageClip

# 加載視頻與圖像
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# logo 動畫——從下向上運動
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# 將 logo 添加到視頻
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

這裡:

  • ImageClip("logo.png").set_duration(5) 加載 logo 圖像並設置其持續時間。
  • set_position(lambda t: ('center', int(500 - 100 * t))) 讓 logo 垂直向上運動。

通過縮放效果的圖像出現

還可以創建圖像逐漸放大的出現效果。


# 加載圖像
logo = ImageClip("logo.png").set_duration(5)

# 設置圖像的縮放以實現放大效果
logo = logo.resize(lambda t: 1 + 0.5 * t)  # 放大效果
logo = logo.set_position(('center', 'center'))

# 叠加帶有縮放動畫的 logo 到視頻
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

這裡:

  • logo.resize(lambda t: 1 + 0.5 * t) 每秒將 logo 放大 50%,實現放大效果。

3. 結合多個動畫元素

MoviePy 支持在一個視頻中結合多個動畫元素。例如,可以同時添加水平移動的文字和垂直運動的圖像。

文字與圖像的同步動畫


# 創建水平移動的文字
text = TextClip("文字與圖像", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# logo 的垂直運動動畫
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# 將文字與 logo 添加到視頻
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

這裡:

  • 我們創建了從左向右移動的文字動畫,和從下向上移動的 logo 動畫。
  • CompositeVideoClip([video, text, logo]) 將兩個動畫元素合成到主視頻。

在一個視頻中創建文字與圖形的動畫

在這個例子中,我們將創建一個完整的視頻,文字將沿對角線移動,logo 將平滑出現並逐漸放大。


from moviepy.editor import VideoFileClip, TextClip, ImageClip, CompositeVideoClip

# 加載視頻
video = VideoFileClip("sample_video.mp4")

# 沿對角線移動的文字
text = TextClip("動畫文字", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# 平滑出現並放大的 logo
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# 將文字與 logo 添加到視頻
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

需要注意的錯誤

有時文字或圖形可能無法如預期顯示出來,這可能是因為時間或位置設置錯誤。檢查你用的邏輯表達式,不要忘記調試代碼。

另一個常見問題是——為什麼我的視頻無法保存為所需格式?確保你已安裝導出視頻所需的編碼器。MoviePy 讓這些操作簡單化,但有時可能遇到兼容問題,安裝附加庫通常可以解決。

本課到此結束。現在你已經學會如何將文字和圖形添加到視頻中,並讓它們充滿動態與活力。在接下來的課程中,會有更多有趣的技巧,持續關注我們,提升你的技能吧!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION