2010-11-22 37 views
4

我有一个MP3轨道在URL http://mysite.com/MP3/track1.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

如果你想要的数据长度为float出于某种原因(不明白为什么,因为它永远是一个整数) ,你现在在做什么真的是低效率的。你可以在C中将整数值转换为浮点数(尽管确保你使用的是正确的浮点数,所以你不会损失太多)。所以你可以这样做:double dataLen =(double)[self.inComingData length]; – 2010-11-22 17:52:29

+0

嘿杰森,谢谢你的回复。浮动是为我的进度条。感谢您的建议。但是,在数据完全下载并初始化之前,您是否对如何播放AVAudioPlayer有任何建议? – slowman21 2010-11-22 17:56:14

回答