python moviepy 自動化音視頻處理實踐

MoviePy是一個用于視頻編輯的Python庫孩饼。它提供了一種簡單且直觀的方式來處理視頻文件髓削,包括剪輯、合并镀娶、裁剪立膛、添加文本、添加音頻等操作。使用MoviePy宝泵,你可以通過編寫Python代碼來創(chuàng)建和編輯視頻好啰,而無需使用復(fù)雜的視頻編輯軟件。

MoviePy建立在另一個庫Pygame和軟件MoviePy Editor的基礎(chǔ)上儿奶,它使用了眾多其他功能強大的庫框往,如Numpy和ImageMagick。它支持多種視頻格式闯捎,并且可以與其他Python庫(如Pillow和OpenCV)進行集成椰弊,以進一步擴展其功能。

MoviePy的主要特點包括:

  • 基本的視頻剪輯操作隙券,如剪切男应、拼接、裁剪娱仔、旋轉(zhuǎn)等沐飘。
  • 添加文本、標題和字幕到視頻中牲迫。
  • 添加音頻軌道耐朴、合并音頻和視頻。
  • 對視頻進行轉(zhuǎn)碼和壓縮盹憎。
  • 支持多種視頻格式筛峭,如MP4、AVI陪每、GIF等影晓。
  • 可以在Jupyter Notebook中進行交互式視頻編輯。

總之檩禾,MoviePy是一個功能強大且易于使用的Python庫挂签,適用于處理和編輯視頻文件。你可以使用它來創(chuàng)建自定義的視頻編輯工具盼产,制作動畫饵婆,添加效果以及進行各種視頻處理操作。


環(huán)境安裝

brew install imagemagick
brew install ffmpeg

中文支持

安裝下載中文字體

https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf

在使用MoviePy庫的TextClip類創(chuàng)建文本剪輯時戏售,如果要支持中文侨核,需要確保以下兩點:

1. 字體文件:選擇一個包含中文字體的字體文件(.ttf格式),并將其下載到本地灌灾〈暌耄可以從互聯(lián)網(wǎng)上找到一些免費的中文字體,例如"SimHei.ttf"锋喜、"SimSun.ttf"等侥衬。

2. 字體設(shè)置:在創(chuàng)建TextClip對象時,通過font參數(shù)指定所選中文字體的路徑跑芳,并設(shè)置合適的字體大小轴总、顏色等屬性。

下面是一個示例代碼博个,演示如何使用TextClip創(chuàng)建支持中文的文本剪輯:

from moviepy.editor import *

# 設(shè)置中文字體路徑
font_path = "/path/to/your/font/SimHei.ttf"

# 創(chuàng)建文本剪輯
text = "你好怀樟,世界!"
text_clip = TextClip(text, fontsize=50, color='white', font=font_path)

# 設(shè)置視頻參數(shù)
duration = 5  # 視頻時長(秒)
fps = 25  # 幀率

# 創(chuàng)建視頻剪輯
video = CompositeVideoClip([text_clip], size=(1920, 1080)).set_duration(duration)

# 保存視頻
video.write_videofile("output.mp4", fps=fps)

在上述代碼中盆佣,需要將font_path變量替換為你下載的中文字體文件的實際路徑往堡。然后,通過設(shè)置fontsize共耍、color等參數(shù)來自定義文本剪輯的樣式虑灰。

請注意,為了確保中文字符正確顯示痹兜,字體文件的路徑應(yīng)使用絕對路徑穆咐,并且需要將字體文件的格式設(shè)置為.ttf。此外字旭,還可以根據(jù)需要調(diào)整視頻的大小对湃、時長和幀率等參數(shù)。

通過以上步驟遗淳,你應(yīng)該能夠創(chuàng)建一個支持中文的文本剪輯拍柒。

API

  • Clip 剪輯
    • clip 剪輯
  • Classes of Video Clips 視頻剪輯的類型
    • VideoClip 視頻剪輯
      • VideoFileClip 視頻文件剪輯
      • ImageClip 圖片剪輯
      • ColorClip 顏色剪輯
      • TextClip 文字剪輯
      • CompositeVideoClip 合成視頻剪輯
  • AudioClip 音頻剪輯
    • AudioClip 音頻剪輯
    • AudioFileClip 音頻文件剪輯
    • CompositeAudioClip 合成視頻剪輯

生成視頻

from moviepy.editor import *

# 1\. 創(chuàng)建一個空白的視頻片段
duration = 5  # 視頻時長(秒)
width, height = 640, 480  # 視頻分辨率
fps = 30  # 幀率
background_color = (255, 255, 255)  # 背景顏色(RGB)
video = ColorClip((width, height), background_color, duration=duration)

# 2\. 添加文字
text = TextClip("Hello, World!", fontsize=50, color='black', size=(width, height))
text = text.set_position(('center', 'center')).set_duration(duration)

# 3\. 添加圖片
image = ImageClip("path/to/image.jpg")
image = image.set_position(('center', 'center')).set_duration(duration)
video = CompositeVideoClip([video, image, text])

# 4\. 設(shè)置視頻參數(shù)
video = video.set_fps(fps)

# 5\. 保存視頻
output_path = "output.mp4"
video.write_videofile(output_path, codec='libx264')

上述代碼的步驟如下:

  1. 創(chuàng)建一個空白的視頻片段,指定時長屈暗、分辨率和背景顏色拆讯。
  2. 創(chuàng)建一個文字片段,設(shè)置文字內(nèi)容养叛、字體大小种呐、顏色和位置,并指定持續(xù)時間一铅。
  3. 創(chuàng)建一個圖片片段陕贮,加載指定的圖片文件,設(shè)置位置和持續(xù)時間潘飘。
  4. 設(shè)置視頻的幀率肮之。
  5. 將文字片段和圖片片段合成到空白視頻片段中。
  6. 保存合成后的視頻到指定路徑卜录。

請確保將代碼中的"path/to/image.jpg"替換為你要使用的圖片的實際路徑戈擒,并指定輸出視頻的路徑。

運行代碼后艰毒,將生成一個包含文字和圖片的視頻文件筐高,并保存在指定的輸出路徑output.mp4中。你可以根據(jù)需要調(diào)整視頻的時長、分辨率柑土、文字內(nèi)容蜀肘、字體樣式、圖片位置等參數(shù)稽屏。

提取音頻

def fetch_audio():
    video = VideoFileClip("/Users/youfu/Movies/output1.mp4")
    audio = video.audio  # 取出聲音
    audio.write_audiofile("output1.mp3")         # 輸出聲音為 mp3
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扮宠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狐榔,更是在濱河造成了極大的恐慌坛增,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄腻,死亡現(xiàn)場離奇詭異收捣,居然都是意外死亡,警方通過查閱死者的電腦和手機庵楷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門罢艾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫁乘,你說我怎么就攤上這事昆婿。” “怎么了蜓斧?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵仓蛆,是天一觀的道長。 經(jīng)常有香客問我挎春,道長看疙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任直奋,我火速辦了婚禮能庆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脚线。我一直安慰自己搁胆,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布邮绿。 她就那樣靜靜地躺著渠旁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪船逮。 梳的紋絲不亂的頭發(fā)上顾腊,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音挖胃,去河邊找鬼杂靶。 笑死梆惯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吗垮。 我是一名探鬼主播垛吗,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抱既!你這毒婦竟也來了职烧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤防泵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蝗敢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捷泞,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年寿谴,在試婚紗的時候發(fā)現(xiàn)自己被綠了锁右。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡讶泰,死狀恐怖咏瑟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痪署,我是刑警寧澤码泞,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站狼犯,受9級特大地震影響余寥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悯森,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一宋舷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓢姻,春花似錦祝蝠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至收班,卻和暖如春坟岔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摔桦。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工社付, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留承疲,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓鸥咖,卻偏偏與公主長得像燕鸽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子啼辣,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容