1. 程式人生 > 程式設計 >如何用python批量調整視訊聲音

如何用python批量調整視訊聲音

今天來研究python中moviepy模組的用途

近來有大量處理視訊的需求,

常會碰到一個問題是下載的視訊音量過小,

會需要將它調大聲,

雖然有線上工具VideoLouder可以免費調整視訊音量大小,

但畢竟若量很大的話一個一個上傳視訊也是挺麻煩的事情,

因此決定再用程式幫忙解決。

使用教學

基礎程式

調整一個視訊音量的程式碼如下:

from moviepy.editor import VideoFileClip,concatenate_videoclips

clip = VideoFileClip(“1.mp4”)#獲取視訊1.mp4(視訊需與程式置於同一資料夾)

newclip = clip.volumex(5)#將音量調整為5倍

newclip.write_videofile(“out.mp4”)#輸出影片名為out.mp4

但實測會出現錯誤AttributeError: 'NoneType' object has no attribute 'stdout',

經研究後,似乎是moviepy版本的問題,

最新的版本為1.0.1,

可以於anaconda prompt中下指令pip list檢視自己所有已安裝的模組版本。

實測要安裝moviepy版本1.0.0才可正常使用,

在anaconda prompt使用pip install moviepy==1.0.0指令即可運作上述程式碼。

批量修改視訊音量

想要一次修改多個視訊的音量,

小馬的程式碼如下,

首先我將所有欲修改的視訊放入當前程式路徑下的music資料夾中,

這邊關鍵會用到python內建模組os,

  • os.getcwd()是取得當前程式的工作路徑
  • os.chdir()可以改變當前程式的工作路徑
  • os.listdir()可以取得指定路徑下的所有檔案名稱
import os
from moviepy.editor import VideoFileClip,concatenate_videoclips
    
def batch_volumex(path,x):
  # 函式功能:在指定路徑下,將該資料夾的視訊聲音調為x倍
  origin_path = os.getcwd()
  os.chdir(path)
  for fname in os.listdir():
    clip = VideoFileClip(fname)
    newclip = clip.volumex(x)
    newclip.write_videofile("new_"+fname)
  os.chdir(origin_path)

path = './music'
batch_volumex(path,5)

這支程式可以將music資料夾下的所有影片的音量調為5倍,

並將影片名稱前加“new_”字串輸出

(注:若原視訊聲音很小,實測音量大概要調3~5倍才會有感)

以上就是如何用python批量調整視訊聲音的詳細內容,更多關於python批量調整視訊聲音的資料請關注我們其它相關文章!