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);
我希望会有一些类似的代码来查找可用的字节大小。
并且还想知道如何在流中获取音乐文件的持续时间以及播放的时间
提前致谢
答案 0 :(得分:2)
Content-Length 是文件中的字节数(八位字节)。这不是几秒钟,如果这是你所期待的。
因此,它永远不会是小数,因此您应该使用unsignedIntegerValue
代替floatValue
。
另外,不要忘记释放已复制的两个对象(至少)。请参阅Memory Management Programming Guide for Core Foundation。
对于特定于音频的信息,例如秒数,您必须先将一些数据传递给Core Audio,然后才能找到它。 CFReadStreams是通用的字节流读取对象;他们对音频,图像或文字或任何其他特定类型的数据一无所知。