2010-11-22 19 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

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

関連する問題