私はOpenGLビューを持っていますが、thisのブログ記事で説明されている方法でビデオを録音しています。それに加えて、私はマイクからオーディオを録音し、それをビデオとミックスしたいと思います。OpenGLビューの録音中にオーディオを録音する
私が思いついた最初のソリューションは、この(私は明瞭にするためにいくつかのコードをommitedました)のようなものだった:私は2つの入力、1つのオーディオ、1本のビデオを作成し、書き込みを開始
writer = [[AVAssetWriter alloc]initWithURL:[NSURL fileURLWithPath:filePath] fileType:AVFileTypeMPEG4 error:&error];
audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings];
videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:videoSettings];
[writer addInput:audioWriterInput];
[writer addInput:videoWriterInput];
[writer startWriting];
。フレームがレンダリングされるたびに、私はCVPixelBufferRef
に変換して使用したライターの入力に追加し、OpenGLのビューのスナップショットを取得AVAssetWriterInputPixelBufferAdaptor
:
CVPixelBufferRef buffer = NULL;
float millisecondsElapsed = [[NSDate date] timeIntervalSinceDate:startRecordingDate] * 1000.0;
buffer = [self pixelBufferFromCGImage:[shot CGImage] size:shot.size];
BOOL addedToBuffer = [bufferAdaptor appendPixelBuffer:buffer withPresentationTime:CMTimeMake(millisecondsElapsed, 1000)];
今私の問題は、私は方法がわからないということですマイクからのオーディオパケットをAVAssetWriterInput
に取得するには、両方を正しく同期させる方法がわかりません。私はAVAssetReader
を見てきましたが、マイクからどのようにオーディオを取得するのか分かりません。また、私はAVAudioRecorder
に書き込むファイルから読むことを考えましたが、それを読み込み、それらのパケットをCMSampleBufferRef
に変換する方法はわかりません。これはAVAssetWriterInput
の入力となります。
誰かが適切な解決策を指摘してくれることを願っています。どんな提案や指示?
ありがとうございます!私がやっている何
私はそれを試して、それはちょうど、感謝を働いた!しかし、私は録音中に両方をミックスする方法を探しています、誰かが答えを持っている場合にはもう少し待つでしょう、そうでなければ私はあなたに答えます。 –
そのような場合は、AVAudioRecorderを使用してオーディオをキャプチャすることができなくなる恐れがあります。そのクラスは常にオーディオをファイルに記録します。あなたは、オーディオをメモリに保存し、その場でコンポジションを作成する必要があります。それが可能かどうかわからない。あなたはiOS SpeakHereの例を見ましたか? – nano