Hi!
I'm trying to create a Camera2 CameraCaptureSession that is capable of four outputs:
- On-screen preview (
SurfaceView, up to 1080p)
- Photo capture (
ImageReader, up to 8k photos)
- Video Capture (
MediaRecorder/MediaCodec, up to 4k videos)
- Frame Processing (
ImageReader, up to 4k video frames)
Unfortunately Camera2 does not support attaching all of those four outputs (Surfaces) at the same time, so I'm going to have to make a compromise.
The compromise that seemed most logical to me was to combine the two video capture pipelines into one, so that the Frame Processing output (#4, ImageReader) redirects the frames into the Video Capture output (#3, MediaRecorder).
How do I write the Images from the ImageReader:
val imageReader = ImageReader.newInstance(4000, 2256, ImageFormat.YUV_420_888, 3)
imageReader.setOnImageAvailableListener({ reader ->
val image = reader.acquireNextImage() ?: return@setOnImageAvailableListener
callback.onVideoFrameCaptured(image)
}, queue.handler)
val captureSession = device.createCaptureSession(.., imageReader.surface)
..into the Surface from the MediaRecorder?
val surface = MediaCodec.createPersistentInputSurface()
val recorder = MediaRecorder(context)
..
recorder.setInputSurface(surface)
I'm not too familiar with OpenGL, so any help here would be appreciated.
Hi!
I'm trying to create a Camera2
CameraCaptureSessionthat is capable of four outputs:SurfaceView, up to 1080p)ImageReader, up to 8k photos)MediaRecorder/MediaCodec, up to 4k videos)ImageReader, up to 4k video frames)Unfortunately Camera2 does not support attaching all of those four outputs (Surfaces) at the same time, so I'm going to have to make a compromise.
The compromise that seemed most logical to me was to combine the two video capture pipelines into one, so that the Frame Processing output (#4,
ImageReader) redirects the frames into the Video Capture output (#3,MediaRecorder).How do I write the Images from the ImageReader:
..into the
Surfacefrom theMediaRecorder?I'm not too familiar with OpenGL, so any help here would be appreciated.