ビデオを記録して保存すると同時に、出力オーディオジャックを介してオーディオキャプチャを通過する必要がある1つのアプリを開発しています。
aurio touch apple のサンプル コードを調べて、オーディオ パススルーを実装しました。
を通じてビデオ録画も実装しましたAVCaptureSession
。上記の両方の機能は個別に行われ、完璧に機能します。
しかし、機能をマージすると、 のオーディオ セッションが原因で、オーディオ パス スルーが機能しませんAVCapturesession
。
AVCaptureSession
また、デリゲート メソッドから取得しているオーディオ データを通過させようとしました。以下は私のコードです:
OSStatus err = noErr;
AudioBufferList audioBufferList;
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer);
CMItemCount numberOfFrames = CMSampleBufferGetNumSamples(sampleBuffer); // corresponds to the number of CoreAudio audio frames
currentSampleTime += (double)numberOfFrames;
AudioTimeStamp timeStamp;
memset(&timeStamp, 0, sizeof(AudioTimeStamp));
timeStamp.mSampleTime = currentSampleTime;
timeStamp.mFlags |= kAudioTimeStampSampleTimeValid;
AudioUnitRenderActionFlags flags = 0;
aurioTouchAppDelegate *THIS = (aurioTouchAppDelegate *)[[UIApplication sharedApplication]delegate];
err = AudioUnitRender(self.rioUnit, &flags, &timeStamp, 1, numberOfFrames, &audioBufferList);
if (err) { printf("PerformThru: error %d\n", (int)err); }
しかし、それはエラーを出しています。できるだけ早くさらに何ができるかアドバイスしてください。非常に多くのドキュメントとコードを調べましたが、解決策が見つかりませんでした。助けてください..