Python視頻剪輯工具moviePy
關注了很多的公眾號,大佬們的騷操作層出不窮,看的我躍躍欲試。也想整一下。跟在大佬們的后面好看風景(復現操作)。
今天要折騰的是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:60
video = CompositeVideoClip(
[VideoFileClip("zxc.mp4").subclip(50, 60)])
# 寫入剪輯完成的音樂
video.write_videofile("done.mp4")
輸出了視頻~
成功辣~
看起來,剪切是小問題。那么,我可以拼接嘛~瞎問,給你安排~
去又爬倆視頻~
魔性的命名方式~
處理中的目錄一角,不知道為什么有mp3格式
處理ing~(視頻有點大了,時間比較久)
其實我覺得應該是一張一張的處理(我還是不會打zeng字)淦!
我去吸溜了一碗飯,回來看見已經處理好了~
from moviepy.editor import VideoFileClip, concatenate_videoclips
clip1 = VideoFileClip("zxc.mp4") # 1
clip2 = VideoFileClip("zx.mp4").subclip(50, 60) # 2
clip3 = VideoFileClip("z.mp4") # 3
final_clip = concatenate_videoclips([clip1, clip2, clip3])
final_clip.write_videofile("big.mp4")
代碼在這里,自己改改
你是不是感覺都是基操呢~是呀,基操
逐幀處理
如何反轉視頻每一幀的綠色和藍色通道,這個看起來明顯一些
mp3又出現了~
自己看吧~
from moviepy.editor import VideoFileClip
my_clip = VideoFileClip("zxc.mp4")
def scroll(get_frame, t):
"""
處理每一幀圖像
"""
frame = get_frame(t)
frame_region = frame[:, :, [0, 2, 1]]
return frame_region
modifiedClip = 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))
# 生成gif
content.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的
自己安裝吧,記得放到系統路徑
文章轉載自微信公眾號云深之無跡
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。