我正在使用 AVCaptureSession 在 iPhone 上的增强现实类型应用程序中预览视频。由于我还在视频预览之上绘制 OpenGL 图形,因此该应用程序非常耗能。我想尽量减少 CPU 的使用以节省电池。
当我使用 Instruments/Energy 使用情况检查应用程序时,我发现 CPU 的很大一部分(约 20%)被“浪费”在了音频处理上。如果我删除我的捕获会话,音频处理不会像预期的那样占用 CPU。
我不明白为什么捕获会话正在进行音频处理,因为我没有添加任何音频设备输入。这是我设置会话的方式:
if(!captureSession) {
captureSession = [[AVCaptureSession alloc] init];
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (videoDevice) {
NSError *error;
AVCaptureDeviceInput *videoIn = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
if (!error) {
if ([captureSession canAddInput:videoIn]) {
[captureSession addInput:videoIn];
}
}
}
}
if(!previewLayer) {
previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
}
CGRect layerRect = [[viewBg layer] bounds];
[previewLayer setBounds:layerRect];
[previewLayer setPosition:CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect))];
[[viewBg layer] addSublayer:previewLayer];
[captureSession startRunning];
有没有办法完全禁用音频(输入),或者在预览视频输入时如何摆脱音频处理 CPU 使用率?