2009-10-11 7 views

Répondre

2

De son Docs:

Portée limitée

Un point doit être clarifié avant de poursuivre: cette classe est destiné pour le streaming audio. En streaming, je ne veux pas dire simplement "un fichier audio transféré via HTTP". Au lieu de cela, je veux dire une source continue HTTP sans fin qui continue indéfiniment (comme une station de radio, pas une seule chanson).

Ceci semble impliquer que l'obtention de la durée peut être difficile.

Voici comment obtenir les tags ID3v2:

Get métadonnées

La source la plus simple de métadonnées provient des en-têtes HTTP. A l'intérieur du handleReadFromStream: eventType: méthode , utilisez CFReadStreamCopyProperty pour copier le kCFStreamPropertyHTTPResponseHeader propriété du CFReadStreamRef, vous pouvez alors utiliser CFHTTPMessageCopyAllHeaderFields pour copier les champs d'en-tête de la réponse . Pour de nombreux serveurs audio en streaming , le nom du flux est l'un des champs .

La source considérablement plus difficile des métadonnées sont les étiquettes ID3. ID3v1 est toujours à la fin du fichier (donc est inutile en streaming). ID3v2 est situé au début, donc peut être plus accessible.

J'ai jamais lu les balises ID3 mais je soupçonne que si vous mettez en cache les premiers quelques centaines de kilo-octets du fichier quelque part comme il charge, ouvrir ce cache avec AudioFileOpenWithCallbacks et a ensuite lu la kAudioFilePropertyID3Tag avec AudioFileGetProperty vous pouvez être capable de lire les données ID3 (s'il existe ). Comme je l'ai dit cependant: je n'ai jamais vraiment fait cela donc je ne sais pas avec certitude que cela fonctionnerait.

Questions connexes