iOS preguntas de transmisión de radio en línea

Tengo que crear una aplicación que proporcione transmisión de radio en línea (icecast), preferiblemente en formato .ogg. Entonces tengo las siguientes preguntas:

¿Cómo puedo jugar .ogg formato de transmisión de audio? ¿Hay clases admitidas? Como no puedo encontrar ninguno, creo que es imposible sin muchas operaciones bit a bit conCFNetwork, CoreAudio, AudioToolbox etc. (No miro a cocos2d, porque es ridículo) ¿Me equivoco? Estoy reproduciendo mp3 por ahora (no hay posibilidad de .ogg para mí). Traté de usarAVPlayer, MPMovieMediaController, AudioSreaming lib por MattGallagher y por DigitalDJ, y ninguna de estas soluciones puede proporcionarme acceso a metadatos.

Para AVPlayer:

   -(void)playButtonPressed:(id)sender
    {
        NSURL *grindURL = [NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];
                    grindFMPlayer = [[AVPlayer alloc] initWithURL:grindURL];
                    [grindFMPlayer.currentItem addObserver:self forKeyPath:@"status" options:0 context:nil]; 
                    AVPlayerItem *item = grindFMPlayer.currentItem;
                    [grindFMPlayer play];
    }

-(void)stopButtonPressed:(id)sender
{
            AVURLAsset *ass = grindFMPlayer.currentItem.asset;
            NSArray *arr = [ass commonMetadata];
            NSArray *it_meta = [grindFMPlayer.currentItem timedMetadata];
            [grindFMPlayer pause];
}

arr yit_meta count siempre0, no hay canción \ artista \ ningún metadato.
Lo mismo para elMPMovieMediaController, metadataUpdate nunca llamó a

streamAudioPlayer = [[MPMoviePlayerController alloc] 
                                                   initWithContentURL:[NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];
                streamAudioPlayer.movieSourceType = MPMovieSourceTypeStreaming;
                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MetadataUpdate:) name:MPMoviePlayerTimedMetadataUpdatedNotification object:nil];
[streamAudioPlayer play];

y en el método del botón de parada:

timedMeta = [streamAudioPlayer timedMetadata];
            if ([streamAudioPlayer timedMetadata]!=nil && [[streamAudioPlayer timedMetadata] count] > 0) 
            {
                NSLog(@"metadata count = %d", [[streamAudioPlayer timedMetadata] count]);
                for (MPTimedMetadata *metadata in [streamAudioPlayer timedMetadata]) 
                {
                    NSLog(@"description %@", metadata.allMetadata);
                    if ([[metadata.allMetadata valueForKey:@"key"] isEqualToString:@"title"]) 
                    {
                        NSString *text = [metadata.allMetadata valueForKey:@"value"];
                        NSString* filename = text;
                    }
                }
            }

[streamAudioPlayer timedMetadata] siempre nulo.

He intentad

https: //github.com/mattgallagher/AudioStreamehttps: //github.com/DigitalDJ/AudioStreame

Estos 2 proyectos para shoutcast y icecast -http: //www.mikejablonski.org/2009/04/17/reading-shoutcast-metadata-from-a-stream

Pero aún no tengo suerte de obtener la información actual de la pista de reproducción, que solo se obtiene enplicación @SHOUTcast com

1st Metadata = 'StreamTitle=',

2nd metadata = '' ybitrate = '128000'
(Así que creo que tengo que tratar con bytes de http respuesta de encabezados o algo así? pero wtf, son metadatos de shoutcast, pero mi radiodifusión es icecast. No tienen idea
¡Estaría agradecido por cualquier ayuda

Respuestas a la pregunta(6)

Su respuesta a la pregunta