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]; –
ねえジェイソン、返事をありがとう。フロートは私のプログレスバー用です。提案していただきありがとうございます。しかし、データが完全にダウンロードされて初期化される前にAVAudioPlayerを再生する方法についての提案はありますか? – slowman21