ビデオをキャプチャするためにプリセット AVCaptureSessionPresetMedium で avcapturesession を使用しています。シェーダーを使用して opengl でこのビデオに効果を適用しています。assetWriter を使用して、ビデオを mp4 ファイルに書き込みます。問題は、オーディオ出力を追加すると、結果のビデオが特に遅くなることです。
これが私のコードの仕組みです:
- - (void)captureOutput:(AVCaptureOutput *)captureOutput... 関数では、キャプチャされたフレームに opengl フィルターを適用します
- 次に、キャプチャ出力がビデオかオーディオかを確認します。ビデオの場合は、glReadPixels を使用して CVPixelBufferRef を作成し、それを AVAssetWriterInputPixelBufferAdaptor に送信して書き込みます。
- オーディオの場合は、CMSampleBufferRef を直接書き込みます
誰かが私のアプローチの何が問題なのか、または結果のビデオを遅くするのはどの部分なのか教えてもらえますか?