1. 程式人生 > >中文文件2-快速上手-MoviePy-預覽

中文文件2-快速上手-MoviePy-預覽

快速瞭解

回到目錄

 下面的內容介紹以下MoviePy適用於何種場景以及MoviePy如何工作。

我需要使用MoviePy嗎?

出於以下的情景或原因,我們可能會有使用Python做視訊編輯的需求。

*我們有大量的視訊需要處理,或者採用複雜的方式將他們拼接。

*我們需要在服務端自動地建立大量視訊或者GIF圖。

*我們需要在視訊中建立視訊編輯器中所沒有的一些特殊的特效,我們只能敲程式碼來實現。

*為其他Python庫(例如:Matplotlib, Mayavi, Gizeh, scikit-images)生產的圖片建立動畫效果。

當然,MoviePy並不是萬能的,下面這樣的需求,MoviePy也無能為力。

*當我們需要逐幀的做影象分析時(例如人臉檢測),這真的不是MoviePy的強項,不如使用ImageIO,OpenCV,SimpleCV這樣專業的庫去處理

*我們僅僅是要將一段視訊,或者一系列圖片接進一個目標視訊中時,我們使用ffmpeg就搞定了,也不用強行使用MoviePy

MoviePy的優點與侷限

MoviePy在開發之初,就秉承著下面的理念

*簡單直觀,基本操作一般一行程式碼搞定。對於初學者,程式碼很容易理解和學習。

*靈活彈性,開發者擁有對視訊或者音訊中每一幀的全部控制權,這也使得我們在建立自定義效果時得心應手。

*跨平臺,使用的ffmpeg各個平臺都有,可以移植到不同的平臺執行。

MoviePy的侷限性如下:

*不支援流媒體,它也確實不是為了處理這樣的視訊而設計的。

*當同時使用太多(官網說>100認為提阿多)的視訊,音訊,或者圖片的時候,我們有可能會遇到記憶體問題。記憶體問題亟待優化。

程式碼示例

在一個MoviePy指令碼中,我們可以載入視訊和音訊,然後修改它們,將他們合併,然後把最終結果寫入到一個新的檔案中。下面的例子,載入視訊,在視訊中間新增一個標題顯示10秒鐘,然後把結果寫入到一個新的檔案內。

# 匯入需要的庫
from moviepy.editor import *

# 從本地載入視訊myHolidays.mp4並擷取00:00:50 - 00:00:60部分
clip = VideoFileClip("myHolidays.mp4").subclip(50,60)

# 調低音訊音量 (volume x 0.8)
clip = clip.volumex(0.8)

# 做一個txt clip. 自定義樣式,顏色.
txt_clip = TextClip("My Holidays 2013",fontsize=70,color='white')

# 文字clip在螢幕正中顯示持續10秒
txt_clip = txt_clip.set_pos('center').set_duration(10)

# 把 text clip 的內容覆蓋 video clip
video = CompositeVideoClip([clip, txt_clip])

# 把最後生成的視訊匯出到檔案內
video.write_videofile("myHolidays_edited.webm")

MoviePy如何工作

MoviePy使用軟體ffmpeg讀取和匯出視訊和音訊檔案,使用ImageMagick生產文字和GIF圖。這些處理過程都有賴於Python強大的數學處理庫,高階特效和軟體加強用到了許多的Python影象處理庫。

基本概念

MoviePy中最核心的物件就是clips 。AudioClips後者VedioClips,開發者可以對clips進行修改(剪下,調速度,調亮度...)或者和其他clip混合拼接到一起。使用PyGame或者IPython NoteBook還可以預覽。

VedioClips可以由視訊檔案,影象,文字或者動畫來建立例項。vedio clip可以擁有一個音訊軌道(audio clip) 和一個疊加層的vedio clip(這是一個特殊的VedioClip,這意味著,當一個視訊和其他VedioClip混合的時候,這個疊加層clip是隱藏的)

一個clip可以被MoviePy中多多種效果作用,比如(clip.resize(width="360")clip.subclip(t1,t2), or clip.fx(vfx.black_white)).

當然,也可以被使用者自定義的效果作用。MoviePy實現了許多類似(clip.flclip.fx)這樣的方法,可以簡便地修改效果。

moviepy.video.tools裡面,還可以找到許多好東西,實現很多高階功能,比如跟蹤視訊中的一個物件,畫一些簡單的圖形,斜線,或者顏色,製作副標題等等效果

最後,即使moviepy沒有圖形化的使用者互動介面,但是在我們高質量地加工我們的視訊的時候,我們仍然有很多可以允許很好地控制和調節指令碼的預覽方式。

QQ群:MoviePy中文 :819718037

回到目錄