有的時候需要手裏的音頻文件變速聽,或可能變慢或可能變快
這裏使用的python進行操作,我的目標是將文件轉成2倍速
首先需要安裝插件
pip install ffmpeg
然後再執行:
from ffmpeg import audio
audio.a_speed("D:\\1505.mp3", "2", "D:\\1505_2x.mp3")
如果執行不出錯,會返回一個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開發的
不過好像我發現,如果音頻文件太大會失敗,返回false
我試過原生的fmpeg是可以進行的,只是會轉換很慢
D:\>ffmpeg -n -i 222.mp3 -filter:a "atempo=2" output.mp3
現在不知道是不是因爲限制了大小(現在猜測可能是顯示了大或者限制了響應時間大小,在源碼裏沒有發現什麼詭異的地方),音頻不算大的是沒問題的,我試的單個文件是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()
後來發現,最好音頻的文件名不要有漢字
上面另兩個代碼應該都是可以的