Python使用MoviePy實(shí)現(xiàn)編輯音視頻并添加字幕
前言
使用Python編輯視頻,各位有沒有試過,我試過。雖然不如剪輯軟件直觀,但是各種剪輯軟件需要手工操作每一步,一個(gè)小的操作不慎就需要挨個(gè)調(diào)節(jié),那是考驗(yàn)?zāi)托暮唾M(fèi)時(shí)費(fèi)力的一件事兒。
那么有沒有可以使用程序進(jìn)行視頻編輯的方法?當(dāng)然有!
程序的好處是:設(shè)置好,一遍效果不好,重新設(shè)置下再運(yùn)行一次就行,根本不用挨個(gè)操作。尤其是字幕!下面我們就簡(jiǎn)單介紹下如何利用Python通過MoviePy庫(kù)編輯視頻。
一、Moviepy是什么
MoviePy是一個(gè)用于視頻編輯的Python模塊,它可被用于一些基本操作(如剪切、拼接、插入標(biāo)題)、視頻合成(即非線性編輯)、視頻處理和創(chuàng)建高級(jí)特效。它可對(duì)大多數(shù)常見視頻格式進(jìn)行讀寫,包括GIF。
二、安裝Moviepy
安裝Moviepy很簡(jiǎn)單,使用如下命令即可安裝:
pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple
三、使用Moviepy
1. 導(dǎo)入Moviepy庫(kù)
在使用Moviepy之前,我們需要使用以下代碼先導(dǎo)入Moviepy
from moviepy.editor import *
2. 視頻剪輯
在進(jìn)行視頻剪輯之前,首先需要加載視頻文件。使用以下代碼可以加載視頻文件:
video = VideoFileClip("input.mp4") # 這里是相對(duì)路徑,如果使用絕對(duì)路徑,請(qǐng)注意路徑。
比如,我們要截取視頻的某個(gè)時(shí)間段作為新的視頻片,如用如下代碼:
# 定義剪輯的開始和結(jié)束時(shí)間,這里的時(shí)間以秒為單位 start = 5 end = 25 # 對(duì)視頻進(jìn)行剪輯 clip_video = video.subclip(start, end)
使用如上方法后,subclip()方法可將第5秒剪切到第25秒,生成一個(gè)新的視頻片段clip。
3. 音頻剪輯
使用AudioFileClip即可載入音頻文件,同時(shí)使用subclip方法即可截取對(duì)應(yīng)時(shí)間音頻,與上面視頻剪輯方法效果一樣。只是這里截取的是音頻。
clip_audio = AudioFileClip("input.mp3").subclip(5, 25)
4. 添加文字
使用TextClip可以創(chuàng)建一個(gè)文本片段對(duì)象,如下:
text = TextClip("Moviepy太好用啦!", font='simhei.ttf', fontsize=80, color='white')# 設(shè)置文本內(nèi)容,字體、大小以及顏色 text = text.set_position('center').set_duration(5)# 設(shè)置文本位置為劇中,并持續(xù)5秒
5. 將文字和音樂合成到視頻中
final_video = CompositeVideoClip([clip_video, text]) final_video = final_video.set_audio(clip_audio)
6. 導(dǎo)出視頻
視頻剪輯完成后,我們使用write_videofile將最終的視頻導(dǎo)出為文件。
final_video.write_videofile("output.mp4", threads = 8, fps=24, codec='mpeg4')
以上代碼將使用8線程、每秒24幀,mpge4編碼格式導(dǎo)出剪輯后的視頻,并保存為output.mp4。
有些人導(dǎo)出了視頻,但使用Windows播放器只能聽到聲音看不到圖像,就是codec沒有設(shè)置好,導(dǎo)致視頻無時(shí)長(zhǎng),只能播放音頻。
四、完整代碼示例
from moviepy.editor import * # 載入視頻 video = VideoFileClip("input.mp4") # 這里是相對(duì)路徑,如果使用絕對(duì)路徑,請(qǐng)注意路徑。 # 定義剪輯的開始和結(jié)束時(shí)間,這里的時(shí)間以秒為單位 start = 5 end = 25 # 對(duì)視頻進(jìn)行剪輯 clip_video = video.subclip(start, end) # 載入并剪輯音頻 clip_audio = AudioFileClip("input.mp3").subclip(5, 25) # 添加文字 clip_text = TextClip("Moviepy太好用啦!", font='simhei.ttf', fontsize=80, color='white')# 設(shè)置文本內(nèi)容,字體、大小以及顏色 clip_text = clip_text.set_position('center').set_duration(5)# 設(shè)置文本位置為劇中,并持續(xù)5秒 # 合成音視頻及文字 final_video = CompositeVideoClip([clip_video, clip_text]) final_video = final_video.set_audio(clip_audio) # 導(dǎo)出編輯后的最終視頻 final_video.write_videofile("output.mp4", threads = 8, fps=24, codec='mpeg4')
總結(jié)
以上只是Moviepy庫(kù)使用方法的一個(gè)簡(jiǎn)單示例。通過以上方法,我們可以方便地進(jìn)行視頻剪輯、音頻剪輯、添加文字的操作。其實(shí)Moviepy的功能遠(yuǎn)不止于此,比如使用圖片生成視頻,還可以添加字幕等。關(guān)于字幕生成和添加,由于涉及內(nèi)容較多,后期單獨(dú)一篇進(jìn)行介紹。
更多使用說明詳見:https://moviepy-cn.readthedocs.io/zh/latest/
到此這篇關(guān)于Python使用MoviePy實(shí)現(xiàn)編輯音視頻并添加字幕的文章就介紹到這了,更多相關(guān)Python MoviePy編輯音視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyTorch 遷移學(xué)習(xí)實(shí)戰(zhàn)
本文主要介紹了PyTorch 遷移學(xué)習(xí)實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01淺談Python3.10 和 Python3.9 之間的差異
多年來,Python 進(jìn)行了大量升級(jí),并且在新版本中添加了許多功能。本文就詳細(xì)的介紹 一下Python3.10 和 Python3.9差異,感興趣的朋友可以了解一下2021-09-09Python使用Keras OCR實(shí)現(xiàn)從圖像中刪除文本
這篇文章主要為大家介紹了如何在Python中利用Keras OCR實(shí)現(xiàn)快速地從圖像中刪除文本,從而作為圖像分類器的預(yù)處理步驟,需要的可以參考一下2022-03-03Python中pygame的mouse鼠標(biāo)事件用法實(shí)例
這篇文章主要介紹了Python中pygame的mouse鼠標(biāo)事件用法,以完整實(shí)例形式詳細(xì)分析了pygame響應(yīng)鼠標(biāo)事件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Python使用pytest-playwright的原因分析
pytest-playwright 是一個(gè) Python 包,它允許您使用 Microsoft 的 Playwright 庫(kù)在 Python 項(xiàng)目中進(jìn)行端到端測(cè)試,這篇文章主要介紹了Python為什么使用pytest-playwright,需要的朋友可以參考下2023-03-03Python學(xué)習(xí)筆記_數(shù)據(jù)排序方法
Python對(duì)數(shù)據(jù)排序有兩種方法:下面我們來簡(jiǎn)單分析下2014-05-05使用Pytorch導(dǎo)出自定義ONNX算子的示例代碼
這篇文章主要介紹了使用Pytorch導(dǎo)出自定義ONNX算子的示例代碼,下面給出個(gè)具體應(yīng)用中的示例:需要導(dǎo)出pytorch的affine_grid算子,但在pytorch的2.0.1版本中又無法正常導(dǎo)出該算子,故可通過如下自定義算子代碼導(dǎo)出,需要的朋友可以參考下2024-03-03python神經(jīng)網(wǎng)絡(luò)之批量學(xué)習(xí)tf.train.batch函數(shù)示例
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)之批量學(xué)習(xí)tf.train.batch函數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05