2011-06-23 19 views
2

私は、オーディオファイルのダウンロードと再生に関するiphoneデザインの質問があります。 Matt GallagherのAudioStreamerサンプルのおかげで、オーディオをストリーミングして再生することができ、後でそれを電話にローカルに保存することはできません。 NSURLConnectionを使用する私はオーディオファイルをダウンロードして保存できますが、データプロパティが読み込み専用であればAVAudioPlayerを初期化するためにそれらをダウンロードするまで待たなければなりません。私はバッファに追加することはできません。目的c再生中のオーディオを再生する

私の質問はどうすればダウンロードを開始することができますが、「十分な」ファイルがダウンロードされた後、再生が開始される前にファイルの再生を開始できますか?それ以外のAVAudioPlayer以外のオーディオプレーヤーが、ダウンロード中にデータを入力できるのですか?

ここで私が見ることができる唯一の方法は、異なるスレッドで両方を行うことですが、もちろんデータを2回プルダウンすることです。

思考?

答えて

0

私はあなたがAVAudioPlayerでそれを行うことができると思ったが、私はそれをテストしなかった。私はそれがとても似AVPlayerに完全にロードすることなく、オーディオ果たしていると信じて:

self.player = [AVPlayer playerWithURL:assetUrl]; 
[player play]; 
0

私はMPMoviePlayerViewControllerとともにAVAudioSessionを使用します。

/** 
* Play audio session 
* 
* @version $Revision: 0.1 
*/ 
- (void)playAudioWithURL:(NSString *)audioURL { 

    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 

    NSError *setCategoryError = nil; 
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError]; 

    if (setCategoryError) { 

    } 

    NSError *activationError = nil; 
    [audioSession setActive:YES error:&activationError]; 

    if (activationError) { 

    } 

    MPMoviePlayerViewController *tempPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL URLWithString:[audioURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]; 

    // Make sure we have airplay 
    if([tempPlayer.moviePlayer respondsToSelector:@selector(setAllowsAirPlay:)]) { 
     tempPlayer.moviePlayer.allowsAirPlay = YES; 
    } 

    tempPlayer.moviePlayer.shouldAutoplay = YES; 
    tempPlayer.moviePlayer.useApplicationAudioSession = NO; 
    [self presentMoviePlayerViewControllerAnimated:tempPlayer]; 
    [tempPlayer.moviePlayer play]; 
    [tempPlayer release]; 

}//end 
+0

いずれのご提案もありがとうございますが、後で再生するためにオーディオファイルを保存しないでください。私はそれらを保存して、接続されていないときに再生できるようにしたいと思います。私はこれを行うことができますが、ダウンロードされたファイルの再生を開始する方法を見つけることができません。私はそれをストリームすることができます。ストリームは5〜7秒以内に開始されますが、ローカルには保存されません。私はそれをローカルに保存して再生することができますが、再生を開始する前にすべてがダウンロードされるまで待つ必要があります。 – user813110

関連する問題