1

私は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使用率を取り除くにはどうすればよいですか?

4

2 に答える 2

2

さらに大きなパフォーマンスの最適化として、AVCaptureVideoPreviewLayerにオーバーレイされた不透明でないOpenGL ESコンテンツを使用しないことをお勧めしますか?代わりに、カメラフィードを取得し、それを拡張現実コンテンツの背後にレンダリングするテクスチャとしてアップロードしてから、カメラテクスチャを含む画面サイズのテクスチャクワッドの前にコンテンツをレンダリングすることで、レンダリングパフォーマンスが大幅に向上します。

個人的な経験から、不透明でないOpenGL ESコンテンツをレンダリングすると、その場合に実行する必要のある合成が原因で、深刻な速度低下が発生します。カメラフレームを取り込んでOpenGLESシーン内の背景として表示すると、OpenGLESホスティングビューを不透明に設定できます。これははるかに効率的です。

オブジェクトトラッキングの例の一部として、このためのサンプルコードがいくつかありますが、カメラのキャプチャとアップロードのより効率的なバージョンは、オープンソースのGPUImageフレームワークのGPUImageVideoCameraクラス内にあります。また、そのフレームワークのコードのプロファイリングでは、セッションの一部として構成されたオーディオ入力なしでオーディオ録音が発生するのを見たことがないので、そこで何をしているのかを調べることができます。

于 2012-05-30T18:05:00.760 に答える
1

私も同じ問題を抱えてる。AV Foundationでバーコードをスキャンしていますが、オーディオには興味がありません。それでも、私のiPhone 5Sの「オーディオ処理」には約20%が無駄になっています。

このバグレポートを提出しました。あなたはそれを複製することを歓迎します。

于 2014-03-21T10:41:57.310 に答える