前幾篇文章咱們介紹了一下圖片的處理方式,今天咱們說說視頻的處理。python能夠支持視頻的處理么?當然是肯定的,人生苦讀,我用python。萬物皆可python。
moviepy庫安裝
今天咱們需要使用的第三方是moviepy,moviepy是用於視頻編輯的Python模塊,可用於基本操作(例如剪切,串聯,標題插入),視頻合成(也稱為非線性編輯),視頻處理或創建高級效果。它可以讀取和寫入最常見的視頻格式,包括GIF。
第一步:安裝moviepy
安裝的話首先需要使用pip命令進行安裝
1 pip install moviepy
第二步:安裝文本依賴庫ImageMagick
安裝完成后,我們需要安裝依賴庫,僅當我們要編寫文本時,才嚴格要求ImageMagick。它也可以用作GIF的后端,但是可以在沒有ImageMagick的情況下使用MoviePy進行GIF。我們將下載的exe文件雙擊運行即可。
第三步:配置路徑
安裝后,MoviePy將自動檢測ImageMagick,但Windows除外!。Windows用戶在手動安裝MoviePy之前,進入moviepy/config_defaults.py文件並提供名為Magick的ImageMagick二進制文件的路徑。它應該看起來像這樣

這樣我們的moviepy就算是完成安裝好了。
使用方法
視頻讀取
VideoFileClip是從視頻文件(支持大多數格式)或GIF文件讀取的剪輯對象。可以按照以下方式加載視頻:
1 myclip = VideoFileClip("菜鳥小白.wmv")
視頻剪輯
可以通過subclip函數將視頻的某幾秒視頻的剪出來
1 myclip2 = myclip.subclip(2,5)#將視頻中2-5秒的內容剪切出來
將視頻進行合並
列表中可以包含多個視頻剪輯對象
1 final_clip = concatenate_videoclips([myclip2,myclip3],method=‘compose’) #視頻合並
需要注意的是:當視頻列表中存在不同編碼方式的視頻對象時,
method=‘compose’是必要的,否則,如果輸入編碼方式不同的視頻會報錯。
對視頻的播放區域進行剪輯
1 final_clip.crop(x_center=x_center, y_center=y_center, width=width, height=height)
改變視頻的分辨率
1 final_clip.resize(newsize=(width, height))
將圖片列表變為視頻
其中images_list可以是圖像名稱列表,也可以是文件夾名稱。提供文件夾名稱或文件名稱列表時,可以選擇load_images=True指定所有圖像都應加載到RAM中。同時所有圖片都需要為同一個大小的圖片
1 image_clip = ImageSequenceClip(['1.jpg','2.jpg','3.jpg'], fps=1)
將兩個視頻同時放在一個畫面播放
1 CompositeVideoClip([myclip2.set_pos("left","center"),myclip3.set_pos("right","center")], size=(myclip2.w+myclip3.w, myclip2.h))

另外還支持漸進切換,下面示例說明myclip2對象在第5秒中切入,myclip3對象在第10秒中切入。
1 CompositeVideoClip([myclip2.set_start(5),myclip3.set_start(10)])
將多段視頻以列表方式播放
1 final_clip = clips_array([[myclip2,myclip3],[myclip3,myclip2]])
