android相机视频格式,Android Video系列一——Camera视频流采集

本文详细介绍了Android中相机视频流的采集过程,包括相机参数设置如图像格式、大小、角度、帧率,以及视频流的处理,如旋转、翻转和格式转换。文章通过代码示例展示了如何初始化相机、获取预览数据,并处理前、后摄像头的旋转和翻转问题,以确保视频正常显示。
摘要由CSDN通过智能技术生成

一、相机相关参数

1.相机id

根据指定的相机id打开相机。

//Camera.CameraInfo.CAMERA_FACING_BACK,Camera.CameraInfo.CAMERA_FACING_FRONT

int mCameraId = Camera.CameraInfo.*CAMERA_FACING_FRONT*;

mCamera = Camera.*open*(mCameraId);

相机id对应着Camera.CameraInfo的facing字段。

Camera.CameraInfo cameraInfo = new Camera.CameraInfo();

for (int i = 0; i < Camera.*getNumberOfCameras*(); i++) {

Camera.*getCameraInfo*(i, cameraInfo);

Log.*d*(*TAG*, "getCameraInstance: camera facing=" + cameraInfo.facing + ",camera orientation=" + cameraInfo.orientation);

}

2.图像格式

可以通过Camera.Parameters.getSupportedPreviewFormats()获取支持的图像格式列表,通过Camera.Parameters.setPreviewFormat(pixel_format)来设置图像格式。

List supportedPreviewFormats = parameters.getSupportedPreviewFormats();

parameters.setPreviewFormat(ImageFormat.NV21);

默认格式为NV21,建议选择的颜色格式为NV21和YV12,这两个是所有机型均支持的。

NV21: YYYYYYYY VU VU => YUV420SP

YV12: YYYYYYYY VV UU => YUV420P

二者均为 YUV 4:2:0采样,即每四个Y共用一组UV分量。其大小为 width * heigh * 3/2 byte。

3.大小(宽度、高度)

大小包括预览尺寸(PreviewSize)和图像尺寸(PictureSize),最好选择一致。

可以通过Camera.Parameters.getSupportedPreviewSizes()获取手机支持的Size列表,选择所需要的大小。通过Camera.Parameters.setPreviewSize和setPictureSize设置大小。

List mapSizes = parameters.getSupportedPreviewSizes();

parameters.setPreviewSize(mImageSize.width, mImageSize.height);

parameters.setPictureSize(mImageSize.width, mImageSize.height);

一般是根据期望的范围,选择一个合适的大小。

private Camera.Size getPreferredPreviewSize(Camera.Parameters parameters, int width, int height) {

List mapSizes = parameters.getSupportedPreviewSizes();

List collectorSizes = new ArrayList<>();

for (Camera.Size option : mapSizes) {

Log.i(TAG, " option.width=" + option.width + " option.height=" + option.height);

if (width > height) {

if (option.width >= width && option.height >= height) {

collectorSizes.add(option);

}

} else {

if (option.width >= height && option.height >= width) {

collectorSizes.add(option);

}

}

}

if (collectorSizes.size() > 0) {

return Collections.min(collectorSizes, new Comparator() {

@Override

publi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值