首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Camera2中如何获取预览YUV数据

在之前的文章Android Camera2详解中描述到,要获取每一帧的预览数据,我们需要ImageReader这个类的帮助: val imageReader = ImageReader(width, height...YUV_420_888是一种Y:U:V按4:1:1的比例进行采样的格式,也就是说其中每一个UV都被四个Y共享, 888表示每一个分量都是8bits NV21和YV12都是这种YUV_420的采样格式,只是其中...,但是深入ImageReader源码后,发现只能使用YUV_420_888,另外两种会抛出UnsupportedOperationException异常 在ImageReader的实例中,参数format...设置为YUV_420_888,并注册数据回调后,对于每一帧预览,我们将拿到一个包装对象Image ImageReader.OnImageAvailableListener { val image...通过阅读源码我们得知,其实在应用层设置YV12或者YUV_420_888,最后被映射到framework层的都是同一个东西。所以我们还是要通过3个plane来分别获取Y,U,V分量的数据。

6.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    安卓Camera2 YUV_420_888

    可以预见,Image将会用来统一Android内部混乱的中间图片数据(这里中间图片数据指如各式YUV格式数据,在处理过程中产生和销毁)管理。...本文主要介绍YUV_420_888格式的图片数据如何在Image中存储和管理。 从YUV420谈起 YUV即通过Y、U和V三个分量表示颜色空间,其中Y表示亮度,U和V表示色度。...官网文档介绍 Android PAI 对 YUV420_888的介绍 ,大致意思如下: 它是YCbCr的泛化格式,能够表示任何4:2:0的平面和半平面格式,每个分量用8 bits 表示。..._420_888格式的数值是35,如上所示,可知当前Preview格式是YUV_420_888,根据image的分辨率是 1920 x 1080 ,像素点个数是2073600 。...参考 参考: Android: Image类浅析(结合YUV_420_888)

    2.7K50

    Android字符串相机

    ImageReader是Android API 19后提供的工具类, 它内部有一个Surface, 可以加载和读取图像, 但是不需要直接显示在界面上....就相当于一个没有界面的后台播放器, 我们需要时可以从里面获取当前"播放"的图像数据. ---- ImageReader还能设置图像的格式, 除了RGB外, 另一种常用的格式是YUV....YUV格式的详细介绍可以看这篇文章: 一文读懂 YUV 的采样与格式 代码实现 之前初始化相机的时候传入一个TextureView显示预览, 现在传入一个ImageReader可以吗?...我这里给ImageReader设置的格式是ImageFormat.YUV_420_888, 这种格式可以直接获得图像的Y分量也就是灰度. 1private ImageReader mImageReader..._420_888, /*maxImages*/2); 3 mImageReader.setOnImageAvailableListener( 4

    85520

    同时使用多个相机流 — Android 相机介绍

    指的是目标 surface 使用了 ImageFormat.YUV_420_888 编码格式 JPEG 指的是 ImageFormat.JPEG 格式 RAW 指的是 ImageFormat.RAW_SENSOR...格式 当选择应用程序的输出类型时,如果目标是使兼容性最大化,推荐使用 ImageFormat.YUV_420_888 做帧分析并使用 ImageFormat.JPEG 保存图像。...例如,如果我们的目标是具有 LEGACY 硬件级别的设备,我们可以设置两个目标输出表面:一个使用 ImageFormat.PRIVATE 另一个使用 ImageFormat.YUV_420_888。...::class.java, format = ImageFormat.YUV_420_888) 复制代码 We must wait until SurfaceView is ready using the..._420_888 frameBufferCount) 复制代码 当使用 ImageReader 这样的阻塞目标缓冲区时,我们需要在使用后丢弃这些帧: imageReader.setOnImageAvailableListener

    2.5K40

    TRTCSDK自定义采集YUV视频通话

    两个图中,不同手机采集的YUV_420_888数据格式不同,左边是yuv420p,右边是yuv420sp 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:yuv数据、安卓相机camera2...、yuv_420_888 这三个知识点,是demo中需要用的音视频基础,下面讲串起来讲一下。...YUV_420_888是YUV的泛化格式,能够表示任何4:2:0的平面和半平面格式,每个分量用8 bits 表示。..._420_888格式的数值是35,如上所示,可知当前Preview格式是YUV_420_888,根据image的分辨率是 1920 x 1080 ,像素点个数是2073600 。...好了,结合上面我对YUV_420_888数据格式的认知,我们需要把他转换成标准的I420或NV21格式,以交给TRTCSDK传输,这里笔者写了两个java层的转换算法: public class YUVUtils

    3.2K72

    TRTCSDK自定义采集YUV视频通话

    两个图中,不同手机采集的YUV_420_888数据格式不同,左边是yuv420p,右边是yuv420sp 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:yuv数据、安卓相机camera2...、yuv_420_888 这三个知识点,是demo中需要用的音视频基础,下面讲串起来讲一下。...YUV_420_888是YUV的泛化格式,能够表示任何4:2:0的平面和半平面格式,每个分量用8 bits 表示。..._420_888格式的数值是35,如上所示,可知当前Preview格式是YUV_420_888,根据image的分辨率是 1920 x 1080 ,像素点个数是2073600 。...好了,结合上面我对YUV_420_888数据格式的认知,我们需要把他转换成标准的I420或NV21格式,以交给TRTCSDK传输,这里笔者写了两个java层的转换算法: public class YUVUtils

    2.8K81

    TRTCSDK自定义采集YUV视频通话

    两个图中,不同手机采集的YUV_420_888数据格式不同,左边是yuv420p,右边是yuv420sp image.png 在开始讲demo代码实现过程之前,我们先回顾一下几个知识点:yuv数据、安卓相机...回调出image,使用yuv工具转换成标准的i420/nv21 } } } 3、YUV_420_888 简介 如上文介绍,仅yuv420就有4种格式...YUV_420_888是YUV的泛化格式,能够表示任何4:2:0的平面和半平面格式,每个分量用8 bits 表示。..._420_888格式的数值是35,如上所示,可知当前Preview格式是YUV_420_888,根据image的分辨率是 1920 x 1080 ,像素点个数是2073600 。...好了,结合上面我对YUV_420_888数据格式的认知,我们需要把他转换成标准的I420或NV21格式,以交给TRTCSDK传输,这里笔者写了两个java层的转换算法: public class YUVUtils

    2.5K80

    Android Camera2详解

    Android设备和Camera是通过管道pipeline的概念将两者进行串联的,在一个会话Session过程中系统发送Request,摄像头返回MetaData进行来回交互;预览和拍照等数据的传递是通过...) 点击拍照按钮进行拍照时,向Session提交一次携带了拍照Surface的Request, 照片数据可在OnImageAvailableListener回调获取 imageReader.setOnImageAvailableListener...比如创建一个获取YUV格式的Surface imageReader = ImageReader.newInstance( size.width, size.height,...ImageFormat.YUV_420_888, IMAGE_BUFFER_SIZE ) ‍‍然后对该imageReader设置数据回调,并在启动预览的Request中将它的Surface...添加进去,这样每一帧预览生成时就能通过数据回调获得Image对象,从这个数据包装对象中我们就可以拿到Y,U,V各个通道的数据了。

    2.7K20
    领券