2011-12-06 3 views
0

AVAudioPlayerクラスに不思議な問題があります。プレイヤーを作成し、イニシャライザから無限参照を取得しますが、-playメッセージがNOを返して、プレイヤーが再生しません。私はプレーヤーデリゲートメソッドを実装しており、-audioPlayerDecodeErrorDidOccur:error:は呼び出されていません。イニシャライザからのエラーは設定されていません。AVAudioPlayerは正常に初期化されますが、再生を拒否します

私は通常の容疑者を確認しました。私はオーディオセッションのカテゴリを設定し、私もそれをアクティブにします。プレーヤーのオーディオファイルは、再生する直前にアプリによって記録されます。別のサウンド(アプリバンドルから)でプレーヤを初期化すると、再生されます。記録されたファイルをアプリバンドルにコピーして、このコピーでプレーヤーを初期化すると、再生されます。ファイルを読み込む前にファイルの存在をチェックすると、そのファイルはそこにあり、読み込み可能で、サイズはゼロではありません。

私はシミュレータとデバイスの両方を試しましたが、違いはありません。

私には何が欠けていますか?

+0

どのようなオーディオファイルですか?あなたが演奏しようとしているのと同じ種類のオーディオフォーマットの異なるサウンドですか?録音したファイルを何らかの形でエクスポートした場合(自分宛にメールするなど)、デスクトップマシンで再生できますか(AVAudioPlayerではなく実際のファイルに問題がありますか)。 –

+0

URLを使用してプレーヤーを初期化すると、エラーが返されますか? – Daniel

+0

オーディオファイルはWAVです。私がすでに質問に書いたように、私は非常に同じファイルをとり、アプリバンドルにコピーして、そこからうまくいく。 (デスクトップ上の別のアプリケーションを使用して開いたときと同じように)。初期化によってエラーは返されません。 – zoul

答えて

0

それは、録音と再生の端部との間に第二の1/10を待つように助けた:もちろん

dispatch_time_t moment = dispatch_time(DISPATCH_TIME_NOW, 1e8); 
dispatch_after(moment, dispatch_get_main_queue(), ^{ 
    [statusLabel setText:@"Playing"]; 
    [self setPlayer:[[AVAudioPlayer alloc] 
     initWithContentsOfURL:[self recordingURL] 
     error:NULL]]; 
    [player play]; 
}); 

これは適切な解決策ではないので、検索のビットの後、私は私がいないことに気づきましたプレイヤーを作成する前にファイルバッファーをフラッシュしないでください。今、私はバッファをフラッシュして、すべてのプレーヤーを正常に動作させるようにします。

関連する問題