public static void readVideo2Bitmap(String uri) throws IOException, InterruptedException {
FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(uri);
grabber.setImageWidth(1280);
grabber.setImageHeight(720);
grabber.setPixelFormat(avutil.AV_PIX_FMT_NV21); // 设置像素格式
grabber.start();
saveAsNV21(grabber); // 调用下列函数
grabber.stop();
grabber.close();
}
private static void saveAsNV21(FFmpegFrameGrabber grabber) throws IOException, InterruptedException {
while (Constant.readVideo2BitmapFlag) {
Frame frame = grabber.grab();
// 这里怎么将frame转换成byte[]数组?
if (RtspActivity.rgbCameraHelper != null) {
RtspActivity.rgbCameraHelper.onPreviewFrame(nv21);
}
Log.i("djtest", "saveAsBitmaps: nv21长度=" + nv21.length);
Thread.sleep(40);
}
}
Frame frame = ff.grabFrame();
AndroidFrameConverter androidFrameConverter = new AndroidFrameConverter();
Bitmap bitmap = androidFrameConverter.convert(frame);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
http://www.yanzuoguang.com/article/711