CFReadStreamRef和可用的字节大小

时间:2009-11-05 09:16:19

标签: iphone cocoa cocoa-touch audio

hai all,

我正在尝试使用iphone sdk实现流式音乐播放器,基于Matt Gallagher的示例代码(http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html

现在我想知道如何获得CFReadStreamRef中可用的字节数。

经过长时间的搜索后,我得到了代码来查找文件的总大小

float audioFileSize = 0.0;
CFHTTPMessageRef myResponse =(CFHTTPMessageRef)CFReadStreamCopyProperty(stream,kCFStreamPropertyHTTPResponseHeader);
audioFileSize = [(NSString *)CFHTTPMessageCopyHeaderFieldValue(myResponse,(CFStringRef)@“Content-Length”)的floatValue];
CFRelease(myResponse);

我希望会有一些类似的代码来查找可用的字节大小。

并且还想知道如何在流中获取音乐文件的持续时间以及播放的时间

提前致谢

1 个答案:

答案 0 :(得分:2)

Content-Length 文件中的字节数(八位字节)。这不是几秒钟,如果这是你所期待的。

因此,它永远不会是小数,因此您应该使用unsignedIntegerValue代替floatValue

另外,不要忘记释放已复制的两个对象(至少)。请参阅Memory Management Programming Guide for Core Foundation

对于特定于音频的信息,例如秒数,您必须先将一些数据传递给Core Audio,然后才能找到它。 CFReadStreams是通用的字节流读取对象;他们对音频,图像或文字或任何其他特定类型的数据一无所知。