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];
}
는 (항상 전체 숫자 때문에 이유를 볼 수 없습니다) :
매트 갤러거는 AudioToolbox를 사용하여,이 정확한 상황에 대한 좋은 튜토리얼을 가지고 , 지금하고있는 일은 정말로 비효율적입니다. C에서 부동 소수점으로 정수 값을 변환 할 수 있습니다 (너무 많이 잃지 않도록 올바른 크기의 부동 소수점을 사용하고 있는지 확인하십시오). 그래서 당신은 할 수 있습니다 : double dataLen = (double) [self.inComingData length]; –
안녕하세요 제이슨, 답장을 보내 주셔서 감사합니다. float는 진행률 표시 줄입니다. 제안 해 주셔서 감사합니다. 그러나 데이터가 완전히 다운로드되고 초기화되기 전에 내 AVAudioPlayer를 재생하는 방법에 대한 제안이 있습니까? – slowman21