[Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印
一、MoviePy 安裝及配置
在 Python 有一個音視頻開發模塊 MoviePy,MoviePy 依賴于 FFmepg,使用 MoviePy 可以對音視頻進行編輯;例如視頻合成、視頻處理、視頻特效等。
在 Python 下直接使用 pip 工具進行安裝即可:
pip install moviepy如果是在 windows 系統下使用 MoviePy 還需要額外安裝 ImageMagick,否則將會出現如下錯誤:
以上提示告訴我們的關鍵信息是我們可能沒有安裝 ImageMagick ,需要將其安裝并且配置安裝后的文件地址則可以正常使用。ImageMagick 可以搜索引擎搜索或者微信關注 [李蘭清的代碼小屋] 回復 ImageMagick 獲取下載鏈接。
安裝完 ImageMagick 后,我們打開 Python 文件目錄搜索 MoviePy,找到 MoviePy 目錄在其下文件中找到 config_defaults.py 文件。
打開該文件對其進行配置 ImageMagick 根目錄下 magick.exe 所在的位置信息:
這樣,之后在使用 MoviePy 將會省心很多。
二、MoviePy 基礎播放
在 MoviePy 中有一個視頻剪輯類 VideoFileClip,它繼承于基類 VideoClip。我們可以使用 VideoFileClip 直接對某一視頻或 GIF 進行加載:
clip = VideoFileClip(r"C:\Users\mx\Desktop\demo.mp4") clip = VideoFileClip(r"C:\Users\mx\Desktop\demo.gif")加載了視頻對象后我們可以使用該對象的 subclip 方法對視頻進行剪輯,subclip 方法接收兩個參數 t_start 與 t_end,t_start 默認為 0 。t_start 表示對該視頻截取片段從第幾秒開始,t_end 表示結束的時間位置,例如如下代碼:
clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,20)VideoFileClip 首先獲取到了 hmbb.mp4 這個視頻對象,隨后調用 subclip 截取第 10 秒到第 20 秒的視頻內容。如果想從視頻末尾截取直接在 t_end 參數傳入負數即可:
clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(0,-2)以上代碼 0,-2 表示該視頻從結尾裁剪 2 秒。最后將視頻導出即可:
from moviepy.editor import *clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,22) clip.write_videofile(r"C:\Users\mx\Desktop\myHolidays_edited.webm")以上代碼是這部分完整的代碼,最終使用 write_videofile 導出媒體文件,可以在導出路徑中填寫視頻的后綴名進行默認轉碼。
最終導出文件后將會出現一個 12 秒視頻,為導出的結果:
我們還可以通過 volumex 方法更改視頻對象的音量大小:
clip = clip.volumex(1.2)三、MoviePy 文字添加
對視頻添加文字可以使用 TextClip 類,該類創建時可以傳入多個參數對需要創建的文字進行修飾,在此先簡單的介紹幾個基本傳入參數。首先看看基本代碼示例(在此注意,使用 TextClip 必須安裝 ImageMagick,在 windows 操作系統上需要對其進行配置,配置方法查看第一點內容):
txt_clip = TextClip("I am 1_bit ",fontsize=70,color='white')以上代碼示例創建了 TextClip 對象,該對象的的第一個參數需要接收一個寫入的字符串,該字符串則為添加到視頻中的字符串,在 TextClip 類的原型中參數名為 txt;接下來在以上示例中傳入了 fontsize 設置了其字體大小為 70,并且設置了顏色 color 為白色 white。那此時如何將該 TextClip 對象的文本添加至視頻中呢?先不急,我們此時還要將該 TextClip 對象的位置進行設置,如何進行顯示是非常必要的。查看示例:
txt_clip = txt_clip.set_pos('center').set_duration(3)以上代碼使用 txt_clip 調用 set_pos 方法設置該文本顯示在視頻的區域為 center 中部,而 set_duration 表示顯示的次序時間,傳入 3表示顯示 3 秒。
接下來我們應該使用 CompositeVideoClip 類對兩者進行裝載。代碼示例如下:
video = CompositeVideoClip([clip, txt_clip])此時生成了一個 CompositeVideoClip 的對象 video,我們可以調用 video 中的 write_videofile 方法將裝載后的視頻進行輸出,從而得到最終的結果。代碼示例如下:
video.write_videofile(r"C:\Users\mx\Desktop\hi.webm")在 write_videofile 后傳入地址輸出路徑即可,最終將會出現一個輸出視頻。該部分完整代碼如下:
from moviepy.editor import *clip = VideoFileClip(r"C:\Users\mx\Desktop\hmbb.mp4").subclip(10,20) clip = clip.volumex(10.2)txt_clip = TextClip("I am 1_bit",fontsize=70,color='white') txt_clip = txt_clip.set_pos('center').set_duration(10)video = CompositeVideoClip([clip, txt_clip]) video.write_videofile(r"C:\Users\mx\Desktop\hi.webm")三、TextClip 的其他參數設置
我們完成了基本的視頻導入及輸出后,我們可以在創建 TextClip 時傳入更多的參數對需要顯示的文字進行更深入的修飾。首先我們可以查看 TextClip 中 init 方法原型:
def __init__(self, txt=None, filename=None, size=None, color='black',bg_color='transparent', fontsize=None, font='Courier',stroke_color=None, stroke_width=1, method='label',kerning=None, align='center', interline=None,tempfilename=None, temptxt=None,transparent=True, remove_temp=True,print_cmd=False):我們在此簡單的對 bg_color、stroke_color、stroke_color 、stroke_width、kerning 進行講解。
bg_color
bg_color 可以設置該文本內容的背景色,直接傳參為指定顏色即可。代碼示例如下:
txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red")導出后播放內容如下:
stroke_color 與 stroke_width
stroke_color 表示對文本描邊的顏色,可以通過顏色標識進行設置。示例代碼如下:
txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green")也可以通過 stroke_width 設置描邊寬度,單位為像素。代碼示例如下:
txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green",stroke_width=2.1)kerning
可以使用 kerning 設置字母間距,代碼示例如下:
txt_clip = TextClip("I am 1_bit",fontsize=70,color='white',bg_color="red",stroke_color="green",kerning=2)總結
以上是生活随笔為你收集整理的[Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《看聊天记录都学不会C语言?太菜了吧》(
- 下一篇: 《看聊天记录都学不会Python到游戏实