这里主要记录一些重要的点。
1:摄像头的处理
camera2+TextureView
cameraDevice!!.createCaptureSession(
listOf(
(imageReader!!.surface)//这个地方只要传入render的Surface
), captureSessionCallback, handler
)
创建好摄像头的session之后
var request = captureSessionRequest.build()
captureSession!!.setRepeatingRequest(request, null, handler)
这样在OnImageAvailableListener的回调里面就会持续的收到数据
var image = it.acquireLatestImage()
if (image != null) {
var convertPlanes2NV21 = yuv420ToNv21(image)//这个地方主要把yuv的数据转成了nv21
postData(convertPlanes2NV21,image.width,image.height,mCameraId.toInt())
image.close()
}
接下来就是对数据进行处理,来看下cpp里面的代码。
int index = 0;
Mat gray;
Mat rgba;
ANativeWindow_Buffer buffer;
uint8_t *dstData;
extern "C"
JNIEXPORT void JNICALL
Java_com_henry_rtmp_cameraopencv_cam