我正在尝试使用Camera2 API通过ImageReader(YUV_420_888格式)设置相机预览.首先,我需要选择支持的预览尺寸:
StreamConfigurationMap scmap = camCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size previewSizes[] = scmap.getOutputSizes(ImageReader.class);
我的Nexus 5X支持以下尺寸:
[4032x3024,4000x3000,3840x2160,3288x2480,3200x2400,2592x1944,2688x1512,2048x1536,1920x1080,1600x1200,1440x1080,1280x960,1280x768,1280x720,1024x768,800x600,864x480,800x480,720x480,640x480,640x360,352x288,320x240,176x144,160x120]
准备ImageReader的实例,并通过重复捕获请求启动CaptureSession:
mImageReader = ImageReader.newInstance(W,H, ImageFormat.YUV_420_888,1);
然后,我尝试在OnImageAvailableListener中读取每个预览帧(以供进一步处理和通过GLES显示).我想知道的是-我收到了多少个Y通道字节:
public void onImageAvailable(ImageReader reader) {
ByteBuffer yBuffer = mImageReader.acquireNextImage().getPlanes()[0].getBuffer();
Log.d(&