我正在使用OpenCV开发Android应用,我是MediaCodec的新手。 在我的项目中,我需要解码视频并将传入的帧保存到OpenCV矩阵中。
我试图测试这个例子,但没有成功。
我的问题是我从缓冲区到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();
}
}
我在这里想念什么?