AvAudioEngine を使用して iOS デバイスでオーディオを録音しています。次のコードを使用して、入力ノードのタップを開始しています
self.forcedMonoAudioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatInt16 sampleRate:44100 channels:1 interleaved:NO];
[self.mMicrophoneNode installTapOnBus:0 bufferSize:1024 format:self.forcedMonoAudioFormat block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {
if(isRecording) {
.
.
,
}
}];
このコードは、iPhone 4s を除くすべてのデバイスで正常に機能します。
iPhone 4s では、ブロックは呼び出されません。
もう 1 つの興味深い点は、installtap 行が 2 回呼び出されることです。
- メインスレッドで一度
- MessengerQueue で - その時点で、MicrophoneNode は Nil です
ただし、コード内でその beling が呼び出した場所は 1 つだけです。
これは、他のタイプのデバイスでは発生しません。
誰かがこの動作について何か洞察を持っているなら、私はそれを感謝します!
ありがとう!