Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 无音频处理的AVCaptureSession视频预览_Iphone_Ios_Avcapturesession - Fatal编程技术网

Iphone 无音频处理的AVCaptureSession视频预览

Iphone 无音频处理的AVCaptureSession视频预览,iphone,ios,avcapturesession,Iphone,Ios,Avcapturesession,我正在使用AVCaptureSession在iPhone上的增强现实应用程序中预览视频。因为我还在视频预览上绘制OpenGL图形,所以这个应用程序相当耗费能源。我想尽量减少cpu的使用以节省电池 当我检查应用程序的仪器/能源使用情况时,我发现相当一部分(约20%)的CPU被“浪费”在音频处理上。如果我删除捕获会话,音频处理将不占用CPU,这与预期的一样 我不明白为什么捕获会话正在进行音频处理,因为我没有向它添加任何音频设备输入。下面是我如何设置会话的: if(!captureSession) {

我正在使用AVCaptureSession在iPhone上的增强现实应用程序中预览视频。因为我还在视频预览上绘制OpenGL图形,所以这个应用程序相当耗费能源。我想尽量减少cpu的使用以节省电池

当我检查应用程序的仪器/能源使用情况时,我发现相当一部分(约20%)的CPU被“浪费”在音频处理上。如果我删除捕获会话,音频处理将不占用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的使用?

作为更大的性能优化,我是否可以建议不要在AVCaptureVideoPreviewLayer上使用非不透明的OpenGL ES内容?相反,通过抓取摄影机提要,将其作为纹理上传到增强现实内容后面进行渲染,然后在包含摄影机纹理的屏幕大小的纹理四元体前面渲染内容,可以获得更好的渲染性能

根据个人经验,渲染非不透明的OpenGL ES内容会导致严重的速度减慢,因为在这种情况下需要执行合成。在OpenGL ES场景中将相机帧作为背景显示,可以将OpenGL ES宿主视图设置为不透明,这将更加高效


我有一些作为对象跟踪示例的一部分,但是在我的开源框架中的GPUImageVideoCamera类中可以找到更高效的摄像头捕获和上传版本。另外,在我对该框架的代码分析中,我没有看到在没有将音频输入配置为会话的一部分的情况下进行音频录制,因此您可以检查我在那里做了什么。

我也有同样的问题。我用AV基础扫描条形码,对音频没有兴趣。然而,大约20%的时间浪费在“音频处理”上


这是我申请的。欢迎你来愚弄它

谢谢你提供的宝贵信息。我一定会检查你的代码并利用它。再次感谢。我设法让视频捕获工作,但我仍然阅读10-20%的音频处理CPU使用率(图形处理只有5-8%)。我一解决问题就给你回电话。你有解决办法吗?