AVAudioRecorder を使用してオーディオを録音し、同時に AVAudioPlayer で別のオーディオ ファイルを再生することはできますか?
1 に答える
0
iOS 6 では可能です。私自身、iOS 5.x でこれを行うには問題があります。5.x より前のバージョンに関する情報はありません。
そのためには、AudioSession-category を次のように設定する必要があります。AVAudioSessionCategoryPlayAndRecord
NSError *error = nil;
NSLog(@"Setting category for AudioSession to AVAudioSessionCategoryPlayAndRecord");
BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (!success) {
NSLog(@"Error setting category for AudioSession:\n\terror: %@", error.localizedDescription);
}
AVAudioRecorder は次のようにセットアップされます。
NSString *fileToRecordPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"record.m4a"];
NSURL *fileToRecordURL = [NSURL fileURLWithPath:fileToRecordPath];
NSDictionary *settings = @{AVFormatIDKey: [NSNumber numberWithInt:kAudioFormatMPEG4AAC],
AVSampleRateKey: [NSNumber numberWithFloat:44100.0],
AVNumberOfChannelsKey: [NSNumber numberWithInt:1]};
NSError *error = nil;
AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc] initWithURL:self.fileURL settings:settings error:&error];
if (!audioRecorder) {
NSLog(@"Error initializing AVAudioRecorder:\n\terror: %@", error.localizedDescription);
}
audioRecorder.delegate = self;
[audioRecorder prepareToRecord];
AVAudioPlayer で別のオーディオ ファイル (同じ形式、m4a) を再生すると、iOS 6 ではすべて正常に動作します。iOS 5 では動作が奇妙です。オーディオの再生またはオーディオの再生を一時停止すると、録音を開始できません。最初に録音を開始すると、(別のファイルの)同時再生は可能ですが。
かなりの検索の後、これを正しく設定する方法が見つかりませんでした。信じられませんが、これは iOS のバグですが、設定がありません。
したがって、これは iOS 6 で動作しますが、iOS 5 の問題に対するヘルプは大歓迎です ;o)
于 2013-06-27T11:50:56.653 に答える