0

如何使用 libstreaming 将捕获的图像发送到网络?我需要将屏幕从 android 流式传输到网站。我不知道在我的代码中我可以在哪里实现这个解决方案。是在生成图像的字节数组之后吗?

private void createVirtualDisplay() {

        Log.d("TAG", "createVirtualDisplay...................");

        // get width and height / obtem largura e altura
        mWidth = Resources.getSystem().getDisplayMetrics().widthPixels / 4;
        mHeight = Resources.getSystem().getDisplayMetrics().heightPixels / 4;   
       
        mImageReader = ImageReader.newInstance(mWidth, mHeight, PixelFormat.RGBA_8888, 2);

        mVirtualDisplay = mMediaProjection.createVirtualDisplay(SCREENCAP_NAME, mWidth, mHeight,
                mDensity, getVirtualDisplayFlags(), mImageReader.getSurface(), null, mHandler);

        mImageReader.setOnImageAvailableListener(new ImageAvailableListener(), mHandler);
    }

private class ImageAvailableListener implements ImageReader.OnImageAvailableListener {
        @Override
        public void onImageAvailable(ImageReader reader) {

            Log.d("TAG", "onImageAvailable...................");

            FileOutputStream fos = null;
            Bitmap bitmap = null;
            try (Image image = mImageReader.acquireLatestImage()) {
                if (image != null) {
                    Image.Plane[] planes = image.getPlanes();
                    ByteBuffer buffer = planes[0].getBuffer(); //o buffer de bytes contendo os dados de imagem para este plano
                    int pixelStride = planes[0].getPixelStride(); //Esta é a distância entre dois valores de pixel consecutivos em uma linha de pixels
                    int rowStride = planes[0].getRowStride(); //Esta é a distância entre o início de duas linhas consecutivas de pixels na imagem
                    int rowPadding = (rowStride - pixelStride * mWidth);

                    // create bitmap
                    bitmap = Bitmap.createBitmap(mWidth + rowPadding / pixelStride, mHeight, Bitmap.Config.ARGB_8888);
                    bitmap.copyPixelsFromBuffer(buffer);



                    IMAGES_PRODUCED++;
                    Log.e(TAG, "captured image: " + IMAGES_PRODUCED);

                    //TRANSFOMAR BITMAP EM ARRAY DE BYTES
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);

                    byte[] dadosImagem = baos.toByteArray();
4

0 回答 0