Multi-Camera

Using multiple Camera Devices in a single Camera Session

A CameraSession allows attaching multiple connections to stream from multiple CameraDevices at the same time - if the system supports it.

Creating a Multi-Camera Session

To create a multi-camera CameraSession, use createCameraSession(true). Make sure supportsMultiCamSessions is true:

if (HybridCameraFactory.supportsMultiCamSessions) {
  const session = await HybridCameraFactory.createCameraSession(true)
}

Using multiple Connections

With a multi-cam CameraSession, you can now attach multiple CameraSessionConnections - for example to stream and capture from the Front- and Back-Camera at the same time, attach both devices:

const session = ...
const frontDevice = useCameraDevice('front')
const backDevice = useCameraDevice('back')
const frontPreview = usePreviewOutput()
const backPreview = usePreviewOutput()

const [frontController, backController] = await session.configure([
  // Front Camera
  {
    input: frontDevice,
    outputs: [
      { output: frontPreviewOutput, mirrorMode: 'on' },
      { output: frontPhotoOutput, mirrorMode: 'off' },
    ],
    config: {}
  },
  // Back Camera
  {
    input: backDevice,
    outputs: [
      { output: backPreviewOutput, mirrorMode: 'off' },
      { output: backPhotoOutput, mirrorMode: 'off' },
    ],
    config: {}
  }
])
await session.start()

Then, ensure you display both frontPreview and backPreview in separate <NativePreviewView /> views.

Each returned CameraController correlates to the connection at that index.