私が開発しているアプリでは、レンガの壁に多少なりとも衝突しました。アプリケーションでは、ローカルに保存されたすべてのオーディオファイルを標準のテーブルビューで一覧表示するビューを入力できます。ここからそれらをクリックして再生するか、下の録画ボタンを押して新しい録画を作成します。その後、自動的にアプリサンドボックスに保存されます。AVAudioRecorderを使ったファイルのランダムな破損(時にはファイルを再生できないことがあります) - iOS
今のところ、このすべては実際にはほとんどの場合完全にうまく機能します。私は座って録音して再生することができます。私は座って、何も問題なく約45回これを繰り返し試すことができます。突然ランダムな時間に、私は非常に奇妙な問題にぶつかります。問題は、レコーダーがどれほど長くレコーディングしても、突然突然、再生できないファイルが壊れてしまい、ちょうど4096バイトのサイズであることです。
私はこのようにそれを設定し、完全に標準的な方法でAVAudioRecorderを使用:私はこのような記録を開始
// Specific settings for the audio recording
NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:8],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:22000.0],
AVSampleRateKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]
initWithURL:contentURL
settings:recordSettings
error:&error];
audioRecorder.delegate = self;
:
if (!isRecording) {
isRecording = YES;
[audioRecorder record];
// Start the timer
recordTiming = [NSDate date];
timeCheck = [NSTimer
scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(timeCheck)
userInfo:nil
repeats:YES];
}
そしてこのでそれを止める:
if (isRecording) {
[audioRecorder stop];
// Stop the timer
[timeCheck invalidate];
}
この問題が発生する原因は何もわかりません。これまで私はほとんどすべてを試しました。私はレコーダーオブジェクトが適切にリサイクルされていることを確認しています(今はそれぞれのレコーディングのために新しいインスタンスを持っています)。また、古い参照が割り当て解除されていて、干渉オブジェクトとは何も関係がないことを確認し、何もそれを解決しません。
壊れたファイルに何が問題を引き起こす可能性があるかについて少し考えている人はいますか?
だからあなたは右、エラー変数がaudioRecorderが初期化された後、常にnilであると言っていますか? –
はい、正しい:)実際には、NSLogが正しく初期化されていること、そしてNSErrorがnilであることを確認するために、以下にいくつかの簡単なエラーチェックがあります。 – CodingBeagle
あなたのコードを改善しましょう。問題は明らかになったり消えたりするはずです。 isRecording変数を使用する代わりに、audioRecorderプロパティの記録を使用できます。私はオーディオセッションの初期化を見ることができませんが、あなたはおそらくそれを省略しました。しかし、私はエラー処理を改善することをお勧めします、以下の答えは参考として使用することができます:http://stackoverflow.com/questions/1010343/how-do-i-record-audio-on-iphone-with -audioudiorecorder –