2012-01-26 31 views
1

私は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の入力となります。

誰かが適切な解決策を指摘してくれることを願っています。どんな提案や指示?

ありがとうございます!私がやっている何

答えて

2

は次のとおりです。

  1. 録音AVAudioRecorderとオーディオファイルに。
  2. ビデオトラックとオーディオトラックを結合するには、AVMutableCompositionを使用します。
  3. ビデオをAVURLAsset変数に読み込みます。
  4. オーディオファイルをAVURLAsset変数に読み込みます。
  5. 各AVURLAssetをAVMutableCompositionTrackに追加します。
  6. 輸出組成とほら...

・ホープ、このことができます。

+0

私はそれを試して、それはちょうど、感謝を働いた!しかし、私は録音中に両方をミックスする方法を探しています、誰かが答えを持っている場合にはもう少し待つでしょう、そうでなければ私はあなたに答えます。 –

+0

そのような場合は、AVAudioRecorderを使用してオーディオをキャプチャすることができなくなる恐れがあります。そのクラスは常にオーディオをファイルに記録します。あなたは、オーディオをメモリに保存し、その場でコンポジションを作成する必要があります。それが可能かどうかわからない。あなたはiOS SpeakHereの例を見ましたか? – nano

関連する問題