2012-01-28 60 views
3

我在網上有一個.mp3文件列表,我想獲得最高質量的文件。 多媒體文件的質量等於它們的比特率。如何確定.mp3比特率而不下載它?

比特率本身應該在文件頭中找到。如果不是,音軌的長度也可以使用。 (文件大小/磁道長度=比特率)

這些事情會很容易,如果我將這些文件在本地,但我想通過HTTP獲取此信息並確定哪個文件具有最高的質量。

我可以從HTTP標頭中獲取音軌長度嗎?如果不是,是否有可能僅提取描述長度/比特率的位而不是下載整個文件?

我在python中編寫代碼,但問題是相當一般的,所以我不把它標記爲python問題。

回答

2

假設遠程服務器運行良好,您可以向文件發出HEAD請求並檢查Content-Length header field的內容。它不給你跟蹤長度或比特率,但你可以得到文件的大小。

編輯:MP3由多個幀組成,每幀可以是不同的比特率(VBR)。軌道長度是根據每個幀的比特率來計算的,而不是存儲的長度本身。如果您想要可靠的比特率,您需要兩個獲取整個文件並獲取每個幀的比特率。可能抓取文件的前幾KB並從第一幀讀取比特率,但這並不總是在文件中的相同位置(例如,由於ID3標籤的位置等)。

+0

這給我帶來了內容的文件大小。我想以秒爲單位獲取音軌的長度,而不是以字節爲單位。 – iTayb 2012-01-28 15:47:49

+0

MP3s可以包含標題/標籤信息,告訴你比特率,但它不一定包含文件中使用的實際比特率。當你考慮到它們也可以是可變比特率時,它會變得更加複雜。如果文件是CBR,那麼也許[frame header](http://www.mp3-tech.org/programmer/frame_header.html)是開始尋找的地方。 – cmbuckley 2012-01-28 15:53:12