2009-11-05 4 views
0

hai tous,CFReadStreamRef et la taille des octets disponibles

Je suis en train de mettre en œuvre une musique en streaming joueur utilisant iphone sdk, basé sur l'exemple de code par Matt Gallagher (http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html)

maintenant je voudrais savoir comment puis-je obtenir le nombre d'octets disponibles dans le CFReadStreamRef.

Après une longue recherche j'ai obtenu le code pour trouver la taille totale du fichier

de audioFileSize = 0,0 flottant;
CFHTTPMessageRef myResponse = (CFHTTPMessageRef) CFReadStreamCopyProperty (stream, kCFStreamPropertyHTTPResponseHeader);
audioFileSize = [(NSString *) CFHTTPMessageCopyHeaderFieldValue (myResponse, (CFStringRef) @ "Content-Length") floatValue];
CFRelease (myResponse);

J'espère qu'il y aura un code similaire pour trouver la taille des octets disponibles.

et aussi savoir comment nous pouvons obtenir la durée du fichier musical dans le flux et combien de temps ses joué

merci à l'avance

Répondre

2

Content-Length est le nombre d'octets (octets) dans le fichier. Ce n'est pas un nombre de secondes, si c'est ce que vous attendiez. En tant que tel, il ne sera jamais fractionnaire, vous devez donc utiliser unsignedIntegerValue au lieu de floatValue. De plus, n'oubliez pas de libérer les deux objets (au moins) copiés. Voir le Memory Management Programming Guide for Core Foundation.

En ce qui concerne les informations spécifiques à l'audio, telles que le nombre de secondes, vous devrez transmettre certaines données à Core Audio avant de pouvoir le découvrir. CFReadStreams sont des objets génériques byte-stream-reading; ils ne savent rien sur l'audio ou les images ou le texte ou tout autre type spécifique de données.

+0

ok. comment puis-je savoir combien d'octets ont été chargés dans la mémoire tampon (c'est-à-dire la quantité de données transmises) merci –

+0

Gardez une trace de cela vous-même. –

Questions connexes