Go to file
Marc Rousavy 977b859e46
feat: New JS API for useCameraDevice and useCameraFormat and much faster getAvailableCameraDevices() (#1784)
* Update podfile

* Update useCameraFormat.ts

* Update API

* Delete FormatFilter.md

* Format CameraViewManager.m ObjC style

* Make `getAvailableCameraDevices` synchronous/blocking

* Create some docs

* fix: Fix HardwareLevel types

* fix: Use new device/format API

* Use 60 FPS format as an example

* Replace `Camera.getAvailableCameraDevices` with new `CameraDevices` API/Module

* Fix Lint

* KTLint options

* Use continuation indent of 8

* Use 2 spaces for indent

* Update .editorconfig

* Format code

* Update .editorconfig

* Format more

* Update VideoStabilizationMode.kt

* fix: Expose `CameraDevicesManager` to ObjC

* Update CameraPage.tsx

* fix: `requiresMainQueueSetup() -> false`

* Always prefer higher resolution

* Update CameraDevicesManager.swift

* Update CameraPage.tsx

* Also filter pixelFormat

* fix: Add AVFoundation import
2023-09-21 11:20:33 +02:00
.github Fix spacing in issue templates 2023-09-19 13:25:08 +02:00
docs feat: New JS API for useCameraDevice and useCameraFormat and much faster getAvailableCameraDevices() (#1784) 2023-09-21 11:20:33 +02:00
package feat: New JS API for useCameraDevice and useCameraFormat and much faster getAvailableCameraDevices() (#1784) 2023-09-21 11:20:33 +02:00
.gitignore Update .gitignore 2023-09-01 18:29:15 +02:00
CODE_OF_CONDUCT.md chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
CONTRIBUTING.md docs: Update CONTRIBUTING 2023-09-01 18:32:23 +02:00
LICENSE chore: Move to /mrousavy/ (#224) 2021-06-21 22:42:46 +02:00
README.md perf: Use ImageWriter instead of OpenGL Pipeline for faster processing (#1789) 2023-09-11 13:58:58 +02:00

VisionCamera

Features

VisionCamera is a powerful and fast Camera component for React Native. It features:

  • 📸 Photo and Video capture
  • 📱 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 QR-Code scanning, facial recognition, AI object detection, realtime video chats, ...)
  • 🔍 Smooth zooming (Reanimated)
  • ⏯️ Fast pause and resume
  • 🌓 HDR & Night modes
  • Highly efficient C++/GPU buffers

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 devices = useCameraDevices('wide-angle-camera')
  const device = devices.back

  if (device == null) return <LoadingView />
  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