2010-11-22 3 views
4

URL에 http://mysite.com/MP3/track1.mp3이라는 mp3 트랙이 있습니다. NSURLConnection 및 NSDocumentDirectory를 사용하여 로컬 경로로 다운로드합니다. 이 트랙을 완전히 다운로드 한 후 가능한 빨리 재생하고 싶습니다. 이 작업을 수행하는 데 시간이 좀 있습니까? "X"크기 제한을 설정하려고 시도하고 다운로드가 해당 트랙을 재생하기 시작하면 해당 트랙을 재생합니다. 그러나 이것은 "X"크기로 초기화 된 시점까지만 재생됩니다. 미리 감사드립니다.다운로드하는 동안 AVAudioPlayer를 시작하는 방법은 무엇입니까?

- (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]; 

} 
+0

는 (항상 전체 숫자 때문에 이유를 볼 수 없습니다) :

매트 갤러거는 AudioToolbox를 사용하여,이 정확한 상황에 대한 좋은 튜토리얼을 가지고 , 지금하고있는 일은 정말로 비효율적입니다. C에서 부동 소수점으로 정수 값을 변환 할 수 있습니다 (너무 많이 잃지 않도록 올바른 크기의 부동 소수점을 사용하고 있는지 확인하십시오). 그래서 당신은 할 수 있습니다 : double dataLen = (double) [self.inComingData length]; –

+0

안녕하세요 제이슨, 답장을 보내 주셔서 감사합니다. float는 진행률 표시 줄입니다. 제안 해 주셔서 감사합니다. 그러나 데이터가 완전히 다운로드되고 초기화되기 전에 내 AVAudioPlayer를 재생하는 방법에 대한 제안이 있습니까? – slowman21

답변

3

AVFoundation을 사용하는 대신 CoreAudio 또는 AudioToolbox를 사용해야합니다. 당신이 어떤 이유로 float로서 데이터 길이를 원하는 경우 http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html

+0

예, 전에 Matt의 코드 중 일부를 읽었습니다. 그러나 그것은 다소 복잡합니다. 나는 대신 자신의 코드를 써야했다. CoreAudio에 관해서는, 나는 그것을 시험해야 할 것이다. 그것에 대해 많이 알지 마라. – slowman21

+0

음, AVAudioPlayer는 상당히 높은 수준이며 많은 옵션을 제공하지 않습니다. 나는 AudioToolbox를 사용한다고 말하고 싶습니다. 왜냐하면 그 파일을 다운로드하는 동안 파일 재생을 위해 앱에서 사용하기 때문입니다. –

+0

파일을 다운로드하는 동안 파일을 재생하는 방법에 대한 실제 예가 있습니까? – Jonny

관련 문제