Marc Rousavy 0d21bc3a57
fix: Fix blackscreen issues and lifecycle when closing Camera (#2339)
* fix: Fix Blackscreen by deterministically destroying session if `isActive=false`

* Re-open Camera if session died

* Simplify Camera

* Disconnect is optional, block when resetting state

* fix: Log in `configure { ... }`

* fix: Make concurrent configure safe

* fix: Don't resize preview

* fix: Use current `CameraConfiguration`

* Don't start if no outputs are available

* Only mount with preview outputs

* Update CameraSession.kt

* Update PreviewView.kt

* Better logging

* Update CameraSession.kt

* Extract

* fix: Rebuild entire session if `isActive` changed

* isActive safe

* Start session at 1

* Create ActiveCameraDevice.kt

* interrupts

* chore: Freeze `frame` in `useFrameProcessor`

* Revert "chore: Freeze `frame` in `useFrameProcessor`"

This reverts commit dff93d506e29a791d8dea8842b880ab5c892211e.

* chore: Better logging

* fix: Move HDR to `video`/`photo` config

* fix: Fix hdr usage

* fix: Ignore any updates after destroying Camera

* fix: Fix video HDR

* chore: Format code

* fix: Check Camera permission

* Remove unneeded error

* Update CameraSession.kt

* Update CameraPage.tsx

* Delete OutputConfiguration.toDebugString.kt

* Update CameraSession.kt
2024-01-08 11:41:57 +01:00
2023-09-01 18:29:15 +02:00
2023-09-01 18:32:23 +02:00
2021-06-21 22:42:46 +02:00
2023-10-04 12:56:47 +02:00

VisionCamera

Features

VisionCamera is a powerful, high-performance Camera library for React Native. It features:

  • 📸 Photo and Video capture
  • 👁️ QR/Barcode scanner
  • 📱 Customizable devices and multi-cameras ("fish-eye" zoom)
  • 🎞️ Customizable resolutions and aspect-ratios (4k/8k images)
  • ⏱️ Customizable FPS (30..240 FPS)
  • 🧩 Frame Processors (JS worklets to run facial recognition, AI object detection, realtime video chats, ...)
  • 🔍 Smooth zooming (Reanimated)
  • ⏯️ Fast pause and resume
  • 🌓 HDR & Night modes
  • Custom C++/GPU accelerated video pipeline (OpenGL)

Install VisionCamera from npm:

yarn add react-native-vision-camera
cd ios && pod install

..and get started by setting up permissions!

Documentation

V3

You're looking at the V3 version of VisionCamera, which features a full rewrite on the Android codebase and a huge refactor on the iOS codebase. If you encounter issues on V3, you can also downgrade to V2, which is still partially supported.

Example

function App() {
  const device = useCameraDevice('back')

  if (device == null) return <NoCameraErrorView />
  return (
    <Camera
      style={StyleSheet.absoluteFill}
      device={device}
      isActive={true}
    />
  )
}

See the example app

Adopting at scale

This library helped you? Consider sponsoring!

VisionCamera is provided as is, I work on it in my free time.

If you're integrating VisionCamera in a production app, consider funding this project and contact me to receive premium enterprise support, help with issues, prioritize bugfixes, request features, help at integrating VisionCamera and/or Frame Processors, and more.

Socials

Description
No description provided
Readme 56 MiB
Languages
Swift 29.9%
Kotlin 26.7%
TypeScript 17.6%
C++ 11.2%
Objective-C++ 7%
Other 7.6%