2012-05-29 4 views
1

iPhone의 증강 현실 유형 앱에서 AVCaptureSession을 사용하여 비디오를 미리 봅니다. 또한 비디오 미리보기 위에 OpenGL 그래픽을 그려 넣기 때문에이 응용 프로그램은 에너지를 많이 소모합니다. 나는 배터리를 절약하기 위해 CPU 사용을 최소화하고 싶다.오디오 처리 기능이없는 AVCaptureSession 비디오 미리보기

악기/에너지 사용으로 앱을 확인할 때 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 사용량 제거 수를 해제하는 방법이 있나요 : 여기가 세션을 설정하는 방법은?

답변

2

더 큰 성능 최적화로 AVCaptureVideoPreviewLayer에 중첩되지 않는 불투명하지 않은 OpenGL ES 콘텐츠를 사용하지 않을 것을 제안 할 수 있습니까? 대신 카메라 피드를 잡고 텍스처로 업로드하여 증강 현실 컨텐츠를 렌더링 한 다음 카메라 텍스처가 포함 된 화면 크기의 질감이있는 쿼드 앞에 컨텐츠를 렌더링하면 렌더링 성능이 훨씬 향상됩니다.

개인적인 경험에 비추어 볼 때, 불투명하지 않은 OpenGL ES 콘텐트를 렌더링하면이 경우 수행해야하는 합성으로 인해 심각한 속도 저하가 발생합니다. 카메라 프레임을 가져 와서 OpenGL ES 장면 내에서 배경으로 표시하면 OpenGL ES 호스팅보기를 불투명하게 설정할 수 있습니다. 이는 훨씬 효율적입니다.

개체 추적 예제의 일부로 sample code for this이 있지만, 오픈 소스 GPUImage 프레임 워크의 GPUImageVideoCamera 클래스에서 카메라 캡처 및 업로드의보다 효율적인 버전을 찾을 수 있습니다. 또한 프레임 워크에 대한 코드를 프로파일 링 할 때 세션의 일부로 구성된 오디오 입력없이 오디오 녹음이 발생하는 것을 보지 못했기 때문에 내가하는 일을 검토 할 수있었습니다.

+0

귀중한 정보 주셔서 감사합니다. 확실히 코드를 확인하고 활용할 것입니다. 다시 한번 감사드립니다. – Mayoneez

+0

비디오 캡처 기능을 사용할 수 있었지만 오디오 프로세싱 (그래픽 처리는 5-8 %)에 대해 여전히 10-20 %의 CPU 사용률을 읽었습니다. 내가 정리하면 다시 연락 할게. – Mayoneez

+0

해결책을 얻었습니까? – e7mac

1

동일한 문제가 있습니다. AV Foundation에서 바코드를 스캔하고 오디오에 관심이 없습니다. 그러나 내 iPhone 5S의 "오디오 처리"에서는 약 20 %가 낭비됩니다.

나는 이것을 bug report에 제출했다. 당신은 그것을 속일 수 있습니다.