android内部传摄像头数据,Android 摄像头采集与数据处理

android Camera2使用

前言:由于有关camera2使用和对数据处理的比较少所以笔者也有着乐于助人心所以有了后面的内容。咋们废话不多说先把流程和目的说下。首先是获取到相关摄像头id、然后打开摄像、接收摄像头数据回调、将y、u、v拼接成完整的yuv、对数据进行旋转生成正常用户看到的画面,以及对yuv数据编码为h264数据。

Camera2 API介绍

1.获取前或者后置摄像头 摄像头都有对应的摄像头id、获取到摄像头id后面有相应的接口打开此id

CameraManager cameraManager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);

for (String cameraId : cameraManager.getCameraIdList()){

CameraCharacteristics characteristic

= cameraManager.getCameraCharacteristics(cameraId);

Integer facing = characteristic.get(CameraCharacteristics.LENS_FACING);

if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {

Log.d(TAG, "onSurfaceTextureAvailable: front camera is cameraid="+cameraId);

break;

}

}

2.打开摄像头以及打开状态回调

cameraManager.openCamera(mCameraId, mCameraDeviceStateCallback, mHandler);

//回调

public CameraDevice mCameraDevice;

private CameraDevice.StateCallback mCameraDeviceStateCallback = new CameraDevice.StateCallback() {

@Override

public void onOpened(CameraDevice camera) {

try {

mCameraDevice = camera;//保存此摄像头对象

startPreview(camera);

} catch (CameraAccessException e) {

e.printStackTrace();

}

}

@Override

public void onDisconnected(CameraDevice camera) {

camera.close();

mCameraDevice = null;

}

@Override

public void onError(CameraDevice camera, int error) {

camera.close();

mCameraDevice = null;

}

};

3.设置分辨率 可根据你显示的view大小进行设置、设置回调数据格式、以及添加预览和回调数据监听

SurfaceTexture texture = mPreviewView.getSurfaceTexture();

// 这里设置的就是预览大小

texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());

Surface surface = new Surface(texture);

//设置读取的图片分辨率

CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);

CameraCharacteristics characteristics

= manager.getCameraCharacteristics(mCameraId);

StreamConfigurationMap map = characteristics.get(

CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);

//小米不支持NV21 支持YV12

Size largest = Collections.max(

Arrays.asList(map.getOutputSizes(ImageFormat.YV12)),//YUV_420_888<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值