CameraX ImageAnalysis 輸出幀大小設置
CameraX 是對 Jetpack 的補充,可讓您更輕鬆地利用 Camera2 API 的功能
它提供一致且易於使用的 API 界面,適用於大多數 Android 設備,並可向後兼容至 Android 5.0(API 級別 21)。
CameraX 架構
GitHub:CameraXBasic
設置分析幀大小有以下兩個函數,只能選擇其一,否則運行會出錯
//設置寬高比
ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9)
//設置實際的尺寸
ImageAnalysis.Builder().setTargetResolution(Size(1920, 1080))
在Camex配置中有如下描述
用例 | 內部界面分辨率 | 輸出數據分辨率 |
---|---|---|
預覽 | 寬高比:使目標與設置最相符的分辨率。 默認分辨率:最高的預覽分辨率,或與上述寬高比匹配的最高設備首選分辨率。 最大分辨率:預覽大小,指的是與設備的屏幕分辨率或 1080p (1920x1080) 匹配的最佳尺寸(以較低者爲準)。 |
內部界面分辨率。提供元數據以允許 View 針對目標寬高比進行剪裁、縮放和旋轉。 |
圖片分析 | 寬高比:使目標與設置最相符的分辨率。 默認分辨率:默認目標分辨率設置爲 640x480。同時調整目標分辨率和相應的寬高比會導致支持的最佳分辨率低於 1080p。 最大分辨率:CameraX 將其限制爲 1080p。目標分辨率默認設置爲 640x480;如果您希望分辨率大於 640x480,則必須使用 setTargetResolution 和 setTargetAspectRatio 從支持的分辨率中選擇最接近的一個。 |
內部界面分辨率。 |
圖片拍攝 | 寬高比:最適合設置的寬高比。 默認分辨率:最高的可用分辨率,或與上述寬高比匹配的最高設備首選分辨率。 最大分辨率:StreamConfigurationMap#getOutputSizes 中 JPEG 格式的相機設備的最大輸出分辨率 |
內部界面分辨率。 |
真機(小米MIX3參數)測試結果如下,測試代碼 Gitee:CameraXBasic
- setTargetAspectRatio(AspectRatio.RATIO_16_9),ImageAnalysis 最大隻能輸出1280x720,無法輸出1920x1080
- setTargetResolution(Size(1920, 1080)) ,ImageAnalysis 最大隻能輸出1600x1200,無法輸出1920X1080
綜上
- 如果要拿到Camera輸出的1920X1080數據,CameraX的API不適合
- Camera2 錄像並獲取實時幀可參考 Gitee:Camera2VideoJava