小编use*_*052的帖子

图像读取器内将帧从 YUV_420_888 格式错误转换为 NV21

我配置了代码,以便使用对象和其余众所周知的APIYUV_420_888从设备的摄像头获取帧流。现在我需要将这些帧转换为像素格式并调用本机函数,该函数期望这种格式的帧执行某些计算。这是我在图像读取器回调中使用的代码,用于重新排列帧的字节:imageReadercamera2NV21

        ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
            @Override
            public void onImageAvailable(ImageReader mReader) {
                Image image = null;
                image = mReader.acquireLatestImage();
                if (image == null) {
                    return;
                }                           

                byte[] bytes = convertYUV420ToNV21(image);

                nativeVideoFrame(bytes);
                image.close();   
            }
        };

private byte[] convertYUV420ToNV21(Image imgYUV420) {

    byte[] rez;

    ByteBuffer buffer0 = imgYUV420.getPlanes()[0].getBuffer();
    ByteBuffer buffer1 = imgYUV420.getPlanes()[1].getBuffer();
    ByteBuffer buffer2 = imgYUV420.getPlanes()[2].getBuffer();

    int buffer0_size = buffer0.remaining();
    int buffer1_size = buffer1.remaining();
    int buffer2_size = buffer2.remaining();

    byte[] buffer0_byte = new byte[buffer0_size];
    byte[] buffer1_byte = new …
Run Code Online (Sandbox Code Playgroud)

android yuv pixelformat android-camera2

5
推荐指数
1
解决办法
2210
查看次数

标签 统计

android ×1

android-camera2 ×1

pixelformat ×1

yuv ×1