2009-10-11 109 views

回答

2

从他Docs

范围有限

有一点需要澄清 之前,我继续:这个 类用于音频流。 通过流式传输,我不只是指“通过HTTP传输的 音频文件”。相反,我的意思是一个连续的HTTP 源,没有结束,无限期地继续 (如广播电台, 不是一首歌)。

这似乎意味着获得持续时间可能会很艰难。

这里是如何得到ID3v2标签:

获取元数据

元数据的最简单的来源是HTTP标头。 里面的 handleReadFromStream:事件类型: 方法,使用CFReadStreamCopyProperty 到 kCFStreamPropertyHTTPResponseHeader 酒店需要从CFReadStreamRef复制, 那么你可以使用 CFHTTPMessageCopyAllHeaderFields到 复制头字段出 响应。对于许多流式音频服务器,流名称是 这些字段之一。

元数据的相当困难的来源是ID3标签。 ID3v1总是在 的文件末尾(因此在流式传输时 无用)。 ID3v2的位置是 ,因此可能更容易访问 。

我从来没有读过ID3标签,但我 怀疑,如果缓存第一 几百千字节的文件 的地方它加载的,打开缓存 与AudioFileOpenWithCallbacks和 然后读取kAudioFilePropertyID3Tag 与AudioFileGetProperty您可能是 能够读取ID3数据(如果它存在 )。就像我说的那样:我已经 从来没有这样做过,所以我不知道 肯定会起作用。