前言
之前製作視頻一般都是pr或者是在線製作視頻,然後昨天偶然看到了一個python的庫—moviepy
,現在我們可以寫代碼來製作視頻了。
安裝
這個庫安裝起來很簡單,還是老樣子pip install moviepy
不過使用windows的話還需要安裝ImageMagick,不然視頻製作會報錯。
安裝ImageMagick的博客
安裝好之後就可以慢慢探索這個庫的使用了,基本上所有的視頻剪輯操作都有相關的函數,我也發現了不少比較好的博客可以用來學習
moviepy的基本使用
國內的相關博客可能不多,有條件的可以去看看國外的相關博客
一個小例子
因爲前兩天六一剛好出門玩拍了一點視頻照片,所以正好拿來作爲素材。
準備好素材,然後寫點字幕,用網頁的文字轉語音導出mp3文件,一切素材準備就緒就可以開始寫代碼了。
結構
代碼
from moviepy import editor
import re
# 添加視頻,做淡入淡出處理
video_clips=[]
for name in ["./MP4/10803738726833380508703892223.mp4","./MP4/video_20200601_150530.mp4"]:
video_clip=editor.VideoFileClip(name).crossfadein(0.5).crossfadeout(0.5)
video_clips.append(video_clip)
# 拼接
bg_video=editor.concatenate(video_clips)
# 語音
voice=editor.AudioFileClip("./MP3/1.mp3")
duration=voice.duration
# 字幕
with open("./txt/字幕.txt",encoding='utf-8') as f:
text=f.readlines()[0]
lines=[line for line in re.split(',|。',text) if line !='']
line_dur=duration/len(lines)
subtitle_clips=[]
for i,line in enumerate(lines):
subtitle_clip=editor.TextClip(line,color='white',font="simhei.ttf",fontsize=60,bg_color='black',align='center')
subtitle_clip=editor.CompositeVideoClip([subtitle_clip]).set_duration(line_dur).set_start(i*line_dur).set_end((i+1)*line_dur)
subtitle_clips.append(subtitle_clip)
subtitles=editor.concatenate(subtitle_clips)
# 合成
final_audio=editor.CompositeAudioClip([voice.volumex(2)]).set_duration(duration)
final_video=editor.CompositeVideoClip([
bg_video,
subtitles.set_position(('center',0.8),relative=True)
]).set_duration(duration)
final_video=final_video.set_audio(final_audio)
# 導出
final_video.write_videofile('./test.mp4',fps=24)
然後同一目錄下就會生成導出的視頻。
最後
近期調整過來了,時不時會發點簡單有趣的分享。