yv12格式视频流保存成jpg/png图片或转rgb格式(java)

新手上路,请多包涵

问题描述

java,java,java的,研究海康摄像头,拿到了yv12格式的视频流数据,现在需要保存成图片或图片流数据,度娘后基本都是转rbg后再保存图片,在java这边有没有什么框架能支持yv12转rgb及rgb转图片或图片流的?或yv12直接转图片流等?

问题出现的环境背景及自己尝试过哪些方法

度娘找到的yv12转rgb的方法,效率不是很好,现rgb转图片或图片流不会,有没有方法?

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

// YV12格式一个像素占1.5个字节
    private byte[] YV12_To_RGB24(byte[] yv12, int width, int height) {
        if (yv12 == null || width < 1 || height < 1) {
            return null;
        }

        int nYLen = width * height;
        int halfWidth = width >> 1;

        if (nYLen < 1 || halfWidth < 1) {
            return null;
        }

        byte[] rgb24 = new byte[width * height * 3];
        int[] rgb = new int[3];
        int i, j, m, n, x, y;
        m = -width;
        n = -halfWidth;
        for (y = 0; y < height; y++) {
            m += width;
            if (y % 2 != 0) {
                n += halfWidth;
            }

            for (x = 0; x < width; x++) {
                i = m + x;
                j = n + (x >> 1);
                rgb[2] = (int) ((int) (yv12[i] & 0xFF) + 1.370705 * ((int) (yv12[nYLen + j] & 0xFF) - 128)); // r
                rgb[1] = (int) ((int) (yv12[i] & 0xFF) - 0.698001 * ((int) (yv12[nYLen + (nYLen >> 2) + j] & 0xFF) - 128) - 0.703125 * ((int) (yv12[nYLen + j] & 0xFF) - 128));   // g
                rgb[0] = (int) ((int) (yv12[i] & 0xFF) + 1.732446 * ((int) (yv12[nYLen + (nYLen >> 2) + j] & 0xFF) - 128)); // b

                //j = nYLen - iWidth - m + x;
                //i = (j<<1) + j;    //图像是上下颠倒的

                j = m + x;
                i = (j << 1) + j;

                for (j = 0; j < 3; j++) {
                    if (rgb[j] >= 0 && rgb[j] <= 255) {
                        rgb24[i + j] = (byte) rgb[j];
                    } else {
                        rgb24[i + j] = (byte) ((rgb[j] < 0) ? 0 : 255);
                    }
                }
            }
        }

        return rgb24;
    }

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题