Как начать играть в AVAudioPlayer при загрузке? - PullRequest
4 голосов
/ 22 ноября 2010

У меня есть mp3-трек по URL http://mysite.com/MP3/track1.mp3. Загрузка его по локальному пути с помощью NSURLConnection и NSDocumentDirectory. Я хотел бы начать играть этот трек как можно скорее, а не после того, как он будет полностью загружен. Есть ли время для этого? Я попытался установить ограничение размера «X», и как только загрузка достигнет этого числа, чтобы начать воспроизведение трека. Но это только воспроизводит до точки, где это было инициализировано в размере "X". Заранее спасибо.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    [self.inComingData appendData:data];
    //NSLog(@"inComingData: %d", [inComingData length]);

    CGFloat dataLen = [[NSString stringWithFormat:@"%d",[self.inComingData length]] floatValue];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [paths objectAtIndex:0];

    appDelegate.path = [documentDirectory stringByAppendingPathComponent:@"track.mp3"];
    [self.inComingData writeToFile:appDelegate.path atomically:YES];

//  NSInteger receivedLen = [self.inComingData length];
//  if ((receivedLen >= 100000) && (!checked)) {
//      //[appDelegate initAndPlay];
//      [appDelegate playTrack];
//      checked = TRUE;
//  }
    [appDelegate initPlayer];

}

1 Ответ

3 голосов
/ 23 ноября 2010

Вместо использования AVFoundation, вы, вероятно, должны изучить использование CoreAudio или AudioToolbox.

Мэтт Галлахер имеет хороший учебник для этой конкретной ситуации, используя AudioToolbox: http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html

...