Python使用MoviePy實(shí)現(xiàn)編輯音視頻并添加字幕
前言
使用Python編輯視頻,各位有沒(méi)有試過(guò),我試過(guò)。雖然不如剪輯軟件直觀,但是各種剪輯軟件需要手工操作每一步,一個(gè)小的操作不慎就需要挨個(gè)調(diào)節(jié),那是考驗(yàn)?zāi)托暮唾M(fèi)時(shí)費(fèi)力的一件事兒。
那么有沒(méi)有可以使用程序進(jìn)行視頻編輯的方法?當(dāng)然有!
程序的好處是:設(shè)置好,一遍效果不好,重新設(shè)置下再運(yùn)行一次就行,根本不用挨個(gè)操作。尤其是字幕!下面我們就簡(jiǎn)單介紹下如何利用Python通過(guò)MoviePy庫(kù)編輯視頻。
一、Moviepy是什么
MoviePy是一個(gè)用于視頻編輯的Python模塊,它可被用于一些基本操作(如剪切、拼接、插入標(biāo)題)、視頻合成(即非線性編輯)、視頻處理和創(chuàng)建高級(jí)特效。它可對(duì)大多數(shù)常見(jiàn)視頻格式進(jìn)行讀寫(xiě),包括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í)間段作為新的視頻片,如用如下代碼:
# 定義剪輯的開(kāi)始和結(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. 將文字和音樂(lè)合成到視頻中
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播放器只能聽(tīng)到聲音看不到圖像,就是codec沒(méi)有設(shè)置好,導(dǎo)致視頻無(wú)時(shí)長(zhǎng),只能播放音頻。
四、完整代碼示例
from moviepy.editor import *
# 載入視頻
video = VideoFileClip("input.mp4") # 這里是相對(duì)路徑,如果使用絕對(duì)路徑,請(qǐng)注意路徑。
# 定義剪輯的開(kāi)始和結(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)單示例。通過(guò)以上方法,我們可以方便地進(jìn)行視頻剪輯、音頻剪輯、添加文字的操作。其實(shí)Moviepy的功能遠(yuǎn)不止于此,比如使用圖片生成視頻,還可以添加字幕等。關(guān)于字幕生成和添加,由于涉及內(nèi)容較多,后期單獨(dú)一篇進(jìn)行介紹。
更多使用說(shuō)明詳見(jià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)文章希望大家以后多多支持腳本之家!
- MoviePy簡(jiǎn)介及Python視頻剪輯自動(dòng)化
- python用moviepy對(duì)視頻進(jìn)行簡(jiǎn)單的處理
- Python使用MoviePy輕松搞定視頻編輯
- python?moviepy?的用法入門(mén)篇
- MoviePy常用剪輯類(lèi)及Python視頻剪輯自動(dòng)化
- Python視頻剪輯Moviepy庫(kù)使用教程
- python基于moviepy實(shí)現(xiàn)音視頻剪輯
- Python使用moviepy讀取字幕srt文件報(bào)錯(cuò)的解決方法詳解
- Moviepy模塊實(shí)現(xiàn)視頻添加圖片水印
- 基于Python和MoviePy實(shí)現(xiàn)照片管理和視頻合成工具
- 使用MoviePy實(shí)現(xiàn)圖像序列合成視頻并添加背景音樂(lè)
相關(guān)文章
對(duì)python中 math模塊下 atan 和 atan2的區(qū)別詳解
今天小編就為大家分享一篇對(duì)python中 math模塊下 atan 和 atan2的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
使用python實(shí)現(xiàn)拉鉤網(wǎng)上的FizzBuzzWhizz問(wèn)題示例
這篇文章主要介紹了使用python實(shí)現(xiàn)拉鉤網(wǎng)上的FizzBuzzWhizz問(wèn)題示例,需要的朋友可以參考下2014-05-05
一文教會(huì)你用python連接并簡(jiǎn)單操作SQLserver數(shù)據(jù)庫(kù)
最近要將數(shù)據(jù)寫(xiě)到數(shù)據(jù)庫(kù)里,學(xué)習(xí)了一下如何用Python來(lái)操作SQLServer數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于用python連接并簡(jiǎn)單操作SQLserver數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2022-09-09
VSCode搭建Django開(kāi)發(fā)環(huán)境的圖文步驟
本篇介紹在vscode環(huán)境下搭建Django開(kāi)發(fā)環(huán)境的詳細(xì)步驟,包括Python、Django、VSCode等,以及它們的安裝和配置方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Python3中關(guān)于cookie的創(chuàng)建與保存
今天小編就為大家分享一篇關(guān)于Python3中關(guān)于cookie的創(chuàng)建與保存的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
舉例簡(jiǎn)單講解Python中的數(shù)據(jù)存儲(chǔ)模塊shelve的用法
這篇文章主要介紹了舉例簡(jiǎn)單講解Python中的數(shù)據(jù)存儲(chǔ)模塊shelve的用法,shelveshelve模塊與pickle模塊的功能相近,比pickle用起來(lái)更為簡(jiǎn)單,需要的朋友可以參考下2016-03-03
Python+OpenCV自制AI視覺(jué)版貪吃蛇游戲
這篇文章為大家詳細(xì)介紹了如何使用mediapipe+opencv自制AI視覺(jué)版的貪吃蛇小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-03-03

