[英]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.