2010-03-25 10 views
0

Je ruisselais un MP3 sur le réseau en utilisant le code d'alimentation personnalisé, non AVAudioPlayer (qui fonctionne uniquement avec des URL) en utilisant des API comme AudioFileStreamOpen et etc.
Est-il possible d'estimer une longueur du cours d'eau? Je sais que je peux obtenir une propriété « écoulement » en utilisant:Connaître la durée estimée d'un flux en utilisant Core Audio

if(AudioQueueGetCurrentTime(queue.audioQueue, NULL, &t, &b) < 0) 
     return 0; 

    return t.mSampleTime/dataFormat.mSampleRate; 

Mais qu'en durée totale pour créer une barre de progression? Est-ce possible?

P.S. Clarification - Je connais la taille réelle du fichier MP3, je ne sais pas si cela peut être utilisé ... Je vais même me contenter d'une solution qui me donne juste une barre de progression, pas le temps réel de jeu/durée.

+0

Comment obtenez-vous les données audio? Utiliser NSURLConnection? –

+0

Non, grâce à un NSStream personnalisé – reflog

Répondre

0

Si vous connaissez la taille totale du fichier MP3, vous pouvez calculer les bits par seconde et donc calculer la durée du flux. Si c'est VBR, vous devrez probablement faire la moyenne de plusieurs images MPEG. Pour CBR, vous pouvez simplement utiliser le débit d'un paquet.

+0

, c'est la solution que j'ai choisie. – reflog