0
我寫了一個python腳本,用30分鐘的mp3取出音頻,並將它分成unix時間戳,第二個長文件。源音頻文件是192kbps,441000Hz,stero mp3文件。Pydub音頻導出在開始時保持沉默?
我希望能夠從一個廣播電臺(我工作的地方)存檔音頻的服務,並且可以在給定的開始和結束時間將其傳送給用戶,到第二個時間。我們將服務器關閉了一個小時以進行維護(我們儘量不要發生這種情況),並使用不同的計算機在30分鐘的時間段內將音頻保存起來。通常情況下,這個歸檔服務器本身保存第二大塊本身沒有問題。
執行轉換的功能,給予30分鐘的輸入音頻文件,該目錄保存在輸出塊和文件作爲UNIX時間戳的開始時間:
def slice_file(infile, workingdir, start):
#find the duration of the input clip in millliseconds
duration_in_milliseconds = len(infile)
print ("Converting " + working_file + " (", end="", flush=True)
song = infile
#grab each one second slice and save it from the first second to the last whole second in the file
for i in range(0,duration_in_milliseconds,1*one_second):
#get the folder where this second goes:
arr = datefolderfromtimestamp(int(start) + (int(i/1000)))
#print ("Second number: %s \n" % (int(i/1000)))
offset = (i + one_second)
current_second = song[i:offset]
ensure_dir(working_directory + "/" + arr[0] + "/" + arr[1] + "/" + arr[2] + "/")
filename = os.path.normpath(working_directory + "/" + arr[0] + "/" + arr[1] + "/" + arr[2] + "/" + str(int(start) + (int(i/1000))) + "-second.mp3")
current_second.export(filename, format="mp3")
#indicate some sort of progress is happening by printing a dot every three minutes processed
if(i % (3*60*one_second) == 0):
print ('.', end="", flush=True)
print (")")
我的問題是所有通過這個腳本轉換的第二個文件似乎都比一秒鐘長,平均開始時有70 ms的靜音。當我從歸檔器服務器上下載文件時,它會將所有文件連接在一起,因此聽起來很糟糕。
有人可以幫我嗎?我不確定這個錯誤來自哪裏。
我,如果你很好奇完整的腳本:
這是我的壞音頻聽起來像。請注意,它應該是2分鐘長,但相反2:07由於所有小沉默加起來由於連接120個第二長文件:http://www.citr.ca/?attachment_id=69907 – Scott