[ MoviePy ] 利用MoviePy將影片加入音訊
由於 OpenCV是視覺處理的 Library,很自然它並沒有處理音訊的部分,所以生成出來的影片是沒有聲音的。
雖然拿 Twice的影片當作 OpenCV練習的素材滿有趣的,但看著沒有音樂的 MV也挺枯燥的。
因此特地找了 MoviePy這個 Library。
MoviePy是用於視頻編輯的 Library,可用於基本操作(如剪切、連接、標題插入),視頻合成(非線性編輯),視頻處理或創建高級效果。它可以讀取和寫入最常見的視頻格式,也包含 GIF。
接著就把 Opencv輸出,但沒有音頻的影片加入音樂吧。
再來介紹一個比較有趣的,網路上常會有人製作 GIF動畫貼在各大論壇。
MoviePy同樣也能輕鬆地製作這些 GIF動畫。
上面的 GIF就是來自下面的 YouTube影片透過以上代碼得到的。編輯時使用的是 1080p畫質。
如果是透過連續的圖片,則需要
*** import moviepy.editor的時候可能會跳出下面的訊息
MoviePy功能非常強大,本篇只有提到本人目前需要的部分,未來需求有增加才會再增加篇幅吧。
對 MoviePy有興趣的朋友歡迎拜訪 MoviePy官網。
雖然拿 Twice的影片當作 OpenCV練習的素材滿有趣的,但看著沒有音樂的 MV也挺枯燥的。
因此特地找了 MoviePy這個 Library。
MoviePy是用於視頻編輯的 Library,可用於基本操作(如剪切、連接、標題插入),視頻合成(非線性編輯),視頻處理或創建高級效果。它可以讀取和寫入最常見的視頻格式,也包含 GIF。
接著就把 Opencv輸出,但沒有音頻的影片加入音樂吧。
from moviepy.editor import VideoFileClip clip1 = VideoFileClip("twice_jelly_jelly.mp4") audioclip1 = clip1.audio clip2 = VideoFileClip("face_twice_jelly_jelly.avi") new_video = clip2.set_audio(audioclip1) # audioclip1.write_audiofile("twice_jelly_jelly.mp3") # 如果想要輸出 mp3 new_video.write_videofile("face_twice_jelly_jelly_audio.mp4")
再來介紹一個比較有趣的,網路上常會有人製作 GIF動畫貼在各大論壇。
MoviePy同樣也能輕鬆地製作這些 GIF動畫。
import moviepy.editor as mpy clip = mpy.VideoFileClip("spcial_video_tzuyu.mp4") subclip = clip.subclip(14.9,16.7) # 從第幾秒開始到第幾秒結束 subclip = subclip.resize(0.2) # 長寬皆乘上 0.2來縮小尺寸。 subclip.write_gif("try.gif")Resize共有下面四種方法
myClip.resize( (460,720) ) # New resolution: (460,720) myClip.resize(0.6) # width and heigth multiplied by 0.6 myClip.resize(width=800) # height computed automatically. myClip.resize(lambda t : 1+0.02*t) # slow swelling of the clip
如果是透過連續的圖片,則需要
import moviepy.editor as mpy import glob import cv2 img_list = glob.glob('./twice/*.png') img_list.sort(key= lambda num: int(num.split("/")[-1].split(".")[0])) img_cv = [] for img in img_list: im = cv2.imread(img) img_cv.append(im) img_cv = img_cv[0:100] # 選擇第幾張圖片到第幾張 clip = mpy.ImageSequenceClip(img_cv, fps=12) # 需要輸入 fps設定 gif播放的速度 clip.write_gif("try.gif") clip.write_videofile("try.mp4") # 若要輸出 mp4
*** import moviepy.editor的時候可能會跳出下面的訊息
... imageio.core.fetching.NeedDownloadError: Need ffmpeg exe. You can download it by calling: imageio.plugins.ffmpeg.download()只要進到 python shell中,輸入下列指令就能下載缺少的部份。
>>> import imageio >>> imageio.plugins.ffmpeg.download()
MoviePy功能非常強大,本篇只有提到本人目前需要的部分,未來需求有增加才會再增加篇幅吧。
對 MoviePy有興趣的朋友歡迎拜訪 MoviePy官網。
留言
張貼留言