Отображение массива данных NV21 в реальном времени в Android - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь это сделать, я получаю поток данных с камеры с байтовым форматом NV21, я могу преобразовать его в растровое изображение, и я показал в формате PNG, но я хочу показать его в прямом эфире со звуком, как я могу это сделать?

 private CameraProxy.CameraDataCallBack callBack = new CameraProxy.CameraDataCallBack() {

        @Override
        public void onDataBack(byte[] data, long length) {
            // TODO Auto-generated method stub
            Log.i(TAG, "length . " + length);

          //NV21 -> yuvImage -> jpeg -> bitmap
            YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, realPreviewSize.getWidth(), realPreviewSize.getHeight(), null);
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            yuvImage.compressToJpeg(new Rect(0, 0, realPreviewSize.getWidth(), realPreviewSize.getHeight()), 100, os);
            byte[] jpegByteArray = os.toByteArray();
            Bitmap bitmap = BitmapFactory.decodeByteArray(jpegByteArray, 0, jpegByteArray.length);
            try {
                fos = new FileOutputStream(photo);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            try {
                fos.close();
               Bitmap img = BitmapFactory.decodeFile(photo.getAbsolutePath());
               runOnUiThread(new Runnable() {
                   @Override
                   public void run() {
                       im.setImageBitmap(img);
                   }
               });

            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    };
...