簡體   English   中英

HTC m8中的低fps`onPreviewFrame`

[英]Low fps `onPreviewFrame` in HTC m8

我正在使用camera.setPreviewCallbackWithBuffer(...)獲取幀-在單獨的幀中進行。 (我知道新的camera2但我現在想堅持使用此API)

關於手機中預覽幀的fps,我有問題。

我已經通過onPreviewFrame(...)方法檢查了fps,在許多設備中(包括使用GenyMotion模擬器onPreviewFrame(...) ,我都得到了大約25 fps。 但是在我的HTC M8中,我的最高速度為11 fps。

在我的onPreviewFrame(...)我刪除了所有幀處理代碼,只保留了fps計算(3條簡單的行),因此其中沒有代碼會減慢速度。 (它在其他設備上運行良好-因此必須是相機設置-我認為)

我試過了

  • setPreviewSize(320,240)
  • setRecordHint(true)
  • setPreviewFpsRange(30000,30000)

(所有檢查均已通過相機的支持值進行了仔細檢查)

HTC M8沒有任何幫助-android 6。

我需要設置什么才能使其更快?

HTC的問題由於某些原因,在使用camera.setPreviewCallbackWithBuffer(..)時我們需要為它們提供多個緩沖區camera.setPreviewCallbackWithBuffer(..)

例如

camera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
       @Override
       public void onPreviewFrame(byte[] data, Camera camera) {

           // Do what ever here

          camera.addCallbackBuffer(data);
      }
});

int bitsPetPixel = ImageFormat.getBitsPerPixel(cameraPreviewFormat);
double bytesPerPixel = bitsPetPixel / 8.0;
int frameSize = (int) (cameraPreviewSize.getWidth() * cameraPreviewSize.getHeight() * bytesPerPixel);

byte[][] framesData = new byte[10][];
for (int i = 0; i < framesData.length; i++) {
     framesData[i] = new byte[frameSize];
}

// Providing more than one buffer did the trick
// For the demo it is 10
for (int i = 0; i < framesData.length; i++) {
   camera.addCallbackBuffer(framesData[i]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM