有的時候我們需要將手里的音頻文件進行變速聽,可能會變慢或者可能變快。今天小編將使用python進行操作,將文件轉成2倍速。
首先我們需要安裝插件:
pip install ffmpeg
然后再執(zhí)行:
from ffmpeg import audio
audio.a_speed("D:\\1505.mp3", "2", "D:\\1505_2x.mp3")
如果執(zhí)行不出錯,會返回一個true
運行結果
這這里我們可以看到這里的音頻速度提升以后音頻小了
這里我是將目標路徑下的MP3音頻轉成了2倍速的,設立不局限于MP3。其他格式的音頻文件也是可以進行處理的。
當然這里還可以進行批量操作:
import os
import sys
from ffmpeg import audio
audio_path = "D:\\audio\\"
finish_path = "D:\\2x_audio\\"
def run():
audio_file = os.listdir(audio_path)
for i, audio1 in enumerate(audio_file):
? print(audio_path+audio1)
? audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
run()
實際上這個的源碼干了一件這個事情
import subprocess
# 調整音頻播放速率
def a_speed(input_file, speed, out_file):
try:
? cmd = "ffmpeg -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file)
? res = subprocess.call(cmd, shell=True)
? if res != 0:
? return False
? return True
except Exception:
? return False
實際可以看到,使用的f調用的原生的fmpeg,也就是基于fmpeg開發(fā)的,
不過好像我發(fā)現(xiàn),如果音頻文件太大會失敗,返回false;我也有試過原生的fmpeg是可以進行的,只是會轉換很慢。
D:\>ffmpeg -n -i 222.mp3 -filter:a "atempo=2" output.mp3
現(xiàn)在不知道是不是因為限制了大?。ìF(xiàn)在猜測可能是顯示了大或者限制了響應時間大小,在源碼里沒有發(fā)現(xiàn)什么詭異的地方),音頻不算大的是沒問題的,我試的單個文件是100多兆的文件,會失敗,但是10m是沒有問題的。
實在不行就直接用原生的好了
import os
import sys
#from ffmpeg import audio
audio_path = "D:\\audio\\"
finish_path = "D:\\2x_audio\\"
def run():
audio_file = os.listdir(audio_path)
for i, audio1 in enumerate(audio_file):
? #print(audio_path+audio1)
? cmd="ffmpeg -n -i "+audio_path+audio1+" -filter:a atempo=2 "+finish_path+"2x"+audio1
? #print(cmd)
? os.system(cmd)
? #audio.a_speed(audio_path+audio1, "2", finish_path+"2x"+audio1)
run()
注意最好音頻的文件名不要有漢字!
評論區(qū)歡迎大家指點一二哦!