關注了很多的公眾號,大佬們的騷操作層出不窮,看的我躍躍欲試。也想整一下。跟在大佬們的后面好看風景(復現操作)。

今天要折騰的是moviePy,是一個視頻的剪輯庫。

MoviePy是一個用于視頻編輯的Python模塊,你可以用它實現一些基本的操作(比如視頻剪輯,視頻拼接,插入標題),還可以實現視頻合成,還有視頻處理,抑或用它加入一些自定義的高級的特效。總之,它的功能還是蠻豐富的。此外,MoviePy可以讀寫絕大多數常見的視頻格式,甚至包括GIF格式!是不是很興奮呢?基于Python2.7以上的版本,MoviePy可以輕松實現跨平臺,Mac/Windows/Linux統統沒問題,這也以意味著,MoviePy項目可以部署到服務端,在服務端進行視頻處理。真是福音啊!

【PS:現在好多的自媒體公司頻繁在各個平臺進行視頻搬運,對于視頻原創性的要求越來越高,用MoviePy可以批量實現視頻編輯,結合MoviePy的跨平臺特性,可以實現在服務端視頻采集,自動處理,發布的流水線作業】

  老規矩,pip安裝一下庫~

pip install moviepy

安裝成功!

突然想起來我還沒有視頻,我去爬一個下來做實驗用~

改下名字。英文名字友好些~

搞個目錄,防止文件污染~

小擼一段碼~,注意放在同一文件夾下,直接寫文件名字就好。至于為什么是zxc.mp4~因為離我手近我好輸入~

看一眼輸出信息~

from moviepy.editor import*# 剪輯50-60秒的音樂 00:00:50 - 00:00:60video = CompositeVideoClip(    [VideoFileClip("zxc.mp4").subclip(50, 60)])# 寫入剪輯完成的音樂video.write_videofile("done.mp4")

輸出了視頻~

成功辣~

看起來,剪切是小問題。那么,我可以拼接嘛~瞎問,給你安排~

去又爬倆視頻~

魔性的命名方式~

處理中的目錄一角,不知道為什么有mp3格式

處理ing~(視頻有點大了,時間比較久)

其實我覺得應該是一張一張的處理(我還是不會打zeng字)淦!

我去吸溜了一碗飯,回來看見已經處理好了~

from moviepy.editor import VideoFileClip, concatenate_videoclipsclip1 = VideoFileClip("zxc.mp4") # 1clip2 = VideoFileClip("zx.mp4").subclip(50, 60) # 2clip3 = VideoFileClip("z.mp4") # 3final_clip = concatenate_videoclips([clip1, clip2, clip3])final_clip.write_videofile("big.mp4")代碼在這里,自己改改

你是不是感覺都是基操呢~是呀,基操

逐幀處理


如何反轉視頻每一幀的綠色和藍色通道,這個看起來明顯一些

mp3又出現了~

自己看吧~

from moviepy.editor import VideoFileClipmy_clip = VideoFileClip("zxc.mp4")def scroll(get_frame, t): """ 處理每一幀圖像 """ frame = get_frame(t) frame_region = frame[:, :, [0, 2, 1]] return frame_regionmodifiedClip = my_clip.fl(scroll)modifiedClip.write_videofile("藍綠.mp4")代碼附上

接著我們來看看最后導出gif唄。

import moviepy.editor as mpy# 獲取視頻內容clip = mpy.VideoFileClip('zxc.mp4')# 按時間劃分截取(如下,截取22分25秒到23分55秒的內容)content = clip.subclip((00, 10), (00, 15))# 截取視頻的同時改變幀大小,改為480x360#content = clip.subclip((22,25),(23,55)).resize((480, 360))# 生成gifcontent.write_gif('get.gif')

還是比較強大的~

那么我需要使用MoviePy嗎?

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

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

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

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

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

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

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

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

MoviePy的優點與局限

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

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

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

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

MoviePy的局限性如下:

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

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

對了,這個庫是依賴于ffpemg的

自己安裝吧,記得放到系統路徑

文章轉載自微信公眾號云深之無跡