使用mediacodec解码后的帧中的负数

时间:2013-12-10 08:49:50

标签: java android opencv mediacodec

我正在使用OpenCV开发Android应用,我是MediaCodec的新手。 在我的项目中,我需要解码视频并将传入的帧保存到OpenCV矩阵中。

我查看This example.

我试图测试这个例子,但没有成功。

我的问题是我从缓冲区到int数组有一个负数。

这是不起作用的功能:

       public void saveFrame(String filename) throws IOException {

       GLES20.glReadPixels(0, 0, mWidth, mHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE,
           mPixelBuf);
       mPixelBuf.rewind();

       int pixelCount = mWidth * mHeight;
       int[] colors = mColorSwapBuf;
       mPixelBuf.asIntBuffer().get(colors);
       for (int i = 0; i < pixelCount; i++) {
           int c = colors[i];
           colors[i] = (c & 0xff00ff00) | ((c & 0x00ff0000) >> 16) | ((c & 0x000000ff) << 16);
       }

       BufferedOutputStream bos = null;
       try {
           bos = new BufferedOutputStream(new FileOutputStream(filename));
           Bitmap bmp = Bitmap.createBitmap(colors, mWidth, mHeight, Bitmap.Config.ARGB_8888);
           bmp.compress(Bitmap.CompressFormat.JPEG, 90, bos);
           bmp.recycle();
       } finally {
           if (bos != null) bos.close();
       }
   }

我在这里想念什么?

0 个答案:

没有答案