Как получить указатель на каждый кадр данных во время предварительного просмотра в Android Camera2 API?

Я пытаюсь получить кадр данных видеокадра во время предварительного просмотра с помощью camera2 API.
Как мне получить указатель на каждый кадр данных.
Перед отображением предварительного просмотра фрейма на этом сайте отправьте указатель данных фрейма вместе со структурой, содержащей формат видеоданных, в функцию C ++ (собственный JNI).
Возможно?
Пожалуйста, помогите мне, дав мне несколько советов?
Я заранее благодарен.

0

Решение

Что касается получения кадров из предварительного просмотра в Java, вы можете добавить ImageReader к вашим захватам. В частности, вам нужно будет выполнить имплантацию ImageReader.OnImageAvailableListener (документ здесь). Из этого ImageReader вы можете получить необработанные байты, используя код, подобный следующему:

ImageReader.OnImageAvailableListener mOnImageAvailableListener =
new ImageReader.OnImageAvailableListener() {

@Override
public void onImageAvailable(ImageReader reader) {
Image img = null;
img = reader.acquireLatestImage();
Result rawResult = null;
try {
if (img == null) throw new NullPointerException("cannot be null");
ByteBuffer buffer = img.getPlanes()[0].getBuffer();
byte[] data = new byte[buffer.remaining()];
buffer.get(data);

Bitmap b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

} catch (ReaderException ignored) {
} catch (NullPointerException ex) {
} finally {
mQrReader.reset();
if (img != null)
img.close();
}
}
};

Вы должны создать ImageReaderи установить его слушатель

mImageReader = ImageReader.newInstance(...);
mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, (...));

И вы можете добавить к вашей сессии захвата таким образом:

Surface surface = new Surface(texture);
Surface mImageSurface = mImageReader.getSurface();
mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.addTarget(mImageSurface);
mPreviewRequestBuilder.addTarget(surface);

Обратите внимание, что это псевдокод, который поможет вам, возможно, он не готов к вставке и работе напрямую, но предоставит вам хорошее руководство по дальнейшим действиям.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]