2009-10-11 74 views

回答

2

從他Docs

範圍有限

有一點需要澄清 之前,我繼續:這個 類用於音頻流。 通過流式傳輸,我不只是指「通過HTTP傳輸的 音頻文件」。相反,我的意思是一個連續的HTTP 源,沒有結束,無限期地繼續 (如廣播電臺, 不是一首歌)。

這似乎意味着獲得持續時間可能會很艱難。

這裏是如何得到ID3v2標籤:

獲取元數據

元數據的最簡單的來源是HTTP標頭。 裏面的 handleReadFromStream:事件類型: 方法,使用CFReadStreamCopyProperty 到 kCFStreamPropertyHTTPResponseHeader 酒店需要從CFReadStreamRef複製, 那麼你可以使用 CFHTTPMessageCopyAllHeaderFields到 複製頭字段出 響應。對於許多流式音頻服務器,流名稱是 這些字段之一。

元數據的相當困難的來源是ID3標籤。 ID3v1總是在 的文件末尾(因此在流式傳輸時 無用)。 ID3v2的位置是 ,因此可能更容易訪問 。

我從來沒有讀過ID3標籤,但我 懷疑,如果緩存第一 幾百千字節的文件 的地方它加載的,打開緩存 與AudioFileOpenWithCallbacks和 然後讀取kAudioFilePropertyID3Tag 與AudioFileGetProperty您可能是 能夠讀取ID3數據(如果它存在 )。就像我說的那樣:我已經 從來沒有這樣做過,所以我不知道 肯定會起作用。