我正在使用带有预设 AVCaptureSessionPresetMedium 的 avcapturesession 来捕获视频,我正在使用 opengl 使用着色器对此视频应用效果。我使用assetWriter 将视频写入mp4 文件。问题是当我添加音频输出时,生成的视频特别慢。
这就是我的代码的工作方式:
- 在 - (void)captureOutput:(AVCaptureOutput *)captureOutput... 函数中,我将 opengl 过滤器应用于捕获的帧
- 然后检查 captureoutput 是视频还是音频,如果是视频,我使用 glReadPixels 创建一个 CVPixelBufferRef 发送到 AVAssetWriterInputPixelBufferAdaptor 来写入它
- 如果是音频,我直接写 CMSampleBufferRef
如果有人能告诉我我的方法有什么问题,或者哪个部分应该使结果视频变慢?