2012-12-27 20 views
5

我有一個Tornado Python服務器,它一次接受一個可變比特率的mp3文件(塊是由固定數量的幀組成的)。Python在Mac OS上以塊爲單位解碼MP3

我所做的只是將二進制向前傳遞,但是,我想知道塊的持續時間。因爲它是可變比特率,我不能做一個簡單的計算。我正在研究pymedia,但是我在mac OS上開發,似乎pymedia不能在那裏安裝(並且,自2006年以來它一直沒有更新)。我也試過pymad,但無法安裝(它自2007年以來一直未更新),無論如何它似乎更多以文件爲中心。

理想情況下,我想從每個塊中提取比特率,例如mutagen。然而,誘變劑需要一個文件作爲輸入,而我希望輸入一個mp3幀或一系列這樣的幀。

def _on_read_frames(self, data): 
    logging.info('read from input:\n%s', data) 
    binary_audio = base64.b64decode(data) 
    # need to find out how many miliseconds went by here 

UPDATE: 這是一個接近實時的,因此MP3是在一小塊一小塊的編碼,所以我目前的解決方案是使用恆定比特率,它允許簡單的計算流架構的一部分,我意識到有這裏使用可變比特率幾乎沒有任何好處。

+1

我懷疑你會發現一些已經適用於你的情況。 MP3處理的誘變源似乎並不那麼大,可能是基於它自己實現的東西? – entropy

+1

意識到對於實時流式傳輸音頻塊而言,可變比特率並沒有真正提供任何優勢。事實上,它提供了一個缺點。我現在明白爲什麼沒有人爲此創建工具,這不是很有用!無論如何,我可以創建這樣一個工具,因爲即使在恆定的比特率下,測量任何音頻幀的比特率也是很有用的。 – JonathanC

回答