VisionCamera
Classes​
Interfaces​
- CameraDevice
- CameraDeviceFormat
- CameraProps
- ErrorWithCause
- PhotoFile
- Point
- RecordVideoOptions
- TakePhotoOptions
- TemporaryFile
- VideoFile
Type Aliases​
AutoFocusSystem​
Ƭ AutoFocusSystem: "contrast-detection" | "phase-detection" | "none"
Indicates a format's autofocus system.
- "none": Indicates that autofocus is not available
- "contrast-detection": Indicates that autofocus is achieved by contrast detection. Contrast detection performs a focus scan to find the optimal position
- "phase-detection": Indicates that autofocus is achieved by phase detection. Phase detection has the ability to achieve focus in many cases without a focus scan. Phase detection autofocus is typically less visually intrusive than contrast detection autofocus
Defined in​
CameraDevice.ts:52
CameraDevices​
Ƭ CameraDevices: { [key in CameraPosition]: CameraDevice | undefined }
Defined in​
hooks/useCameraDevices.ts:7
CameraPermissionRequestResult​
Ƭ CameraPermissionRequestResult: "granted" | "denied"
Defined in​
Camera.tsx:15
CameraPermissionStatus​
Ƭ CameraPermissionStatus: "granted" | "not-determined" | "denied" | "restricted"
Defined in​
Camera.tsx:14
CameraPosition​
Ƭ CameraPosition: "front" | "back" | "unspecified" | "external"
Represents the camera device position.
- "back": Indicates that the device is physically located on the back of the system hardware
- "front": Indicates that the device is physically located on the front of the system hardware
iOS only​
- "unspecified": Indicates that the device's position relative to the system hardware is unspecified
Android only​
- "external": The camera device is an external camera, and has no fixed facing relative to the device's screen. (Android only)
Defined in​
CameraPosition.ts:13
CaptureError​
Ƭ CaptureError: "capture/invalid-photo-format" | "capture/encoder-error" | "capture/muxer-error" | "capture/recording-in-progress" | "capture/no-recording-in-progress" | "capture/file-io-error" | "capture/create-temp-file-error" | "capture/invalid-video-options" | "capture/create-recorder-error" | "capture/recorder-error" | "capture/no-valid-data" | "capture/inactive-source" | "capture/insufficient-storage" | "capture/file-size-limit-reached" | "capture/invalid-photo-codec" | "capture/not-bound-error" | "capture/capture-type-not-supported" | "capture/video-not-enabled" | "capture/photo-not-enabled" | "capture/aborted" | "capture/unknown"
Defined in​
CameraError.ts:31
DeviceError​
Ƭ DeviceError: "device/configuration-error" | "device/no-device" | "device/invalid-device" | "device/torch-unavailable" | "device/microphone-unavailable" | "device/pixel-format-not-supported" | "device/low-light-boost-not-supported" | "device/focus-not-supported" | "device/camera-not-available-on-simulator"
Defined in​
CameraError.ts:8
FormatError​
Ƭ FormatError: "format/invalid-fps" | "format/invalid-hdr" | "format/invalid-low-light-boost" | "format/invalid-format" | "format/invalid-color-space"
Defined in​
CameraError.ts:18
FrameProcessor​
Ƭ FrameProcessor: { frameProcessor: (frame: Frame) => void ; type: "frame-processor"  } | { frameProcessor: (frame: DrawableFrame) => void ; type: "skia-frame-processor"  }
Defined in​
CameraProps.ts:7
LogicalCameraDeviceType​
Ƭ LogicalCameraDeviceType: "dual-camera" | "dual-wide-camera" | "triple-camera"
Indentifiers for a logical camera (Combinations of multiple physical cameras to create a single logical camera).
- "dual-camera": A combination of wide-angle and telephoto cameras that creates a capture device.
- "dual-wide-camera": A device that consists of two cameras of fixed focal length, one ultrawide angle and one wide angle.
- "triple-camera": A device that consists of three cameras of fixed focal length, one ultrawide angle, one wide angle, and one telephoto.
Defined in​
CameraDevice.ts:20
ParameterError​
Ƭ ParameterError: "parameter/invalid-parameter" | "parameter/unsupported-os" | "parameter/unsupported-output" | "parameter/unsupported-input" | "parameter/invalid-combination"
Defined in​
CameraError.ts:2
PermissionError​
Ƭ PermissionError: "permission/microphone-permission-denied" | "permission/camera-permission-denied"
Defined in​
CameraError.ts:1
PhysicalCameraDeviceType​
Ƭ PhysicalCameraDeviceType: "ultra-wide-angle-camera" | "wide-angle-camera" | "telephoto-camera"
Indentifiers for a physical camera (one that actually exists on the back/front of the device)
- "ultra-wide-angle-camera": A built-in camera with a shorter focal length than that of a wide-angle camera. (focal length between below 24mm)
- "wide-angle-camera": A built-in wide-angle camera. (focal length between 24mm and 35mm)
- "telephoto-camera": A built-in camera device with a longer focal length than a wide-angle camera. (focal length between above 85mm)
Defined in​
CameraDevice.ts:11
SessionError​
Ƭ SessionError: "session/camera-not-ready" | "session/camera-cannot-be-opened" | "session/camera-has-been-disconnected" | "session/audio-session-setup-failed" | "session/audio-in-use-by-other-app" | "session/audio-session-failed-to-activate"
Defined in​
CameraError.ts:24
SystemError​
Ƭ SystemError: "system/camera-module-not-found" | "system/no-camera-manager" | "system/frame-processors-unavailable" | "system/skia-unavailable" | "system/view-not-found"
Defined in​
CameraError.ts:53
UnknownError​
Ƭ UnknownError: "unknown/unknown"
Defined in​
CameraError.ts:59
VideoStabilizationMode​
Ƭ VideoStabilizationMode: "off" | "standard" | "cinematic" | "cinematic-extended" | "auto"
Indicates a format's supported video stabilization mode. Enabling video stabilization may introduce additional latency into the video capture pipeline.
- "off": No video stabilization. Indicates that video should not be stabilized
- "standard": Standard software-based video stabilization. Standard video stabilization reduces the field of view by about 10%.
- "cinematic": Advanced software-based video stabilization. This applies more aggressive cropping or transformations than standard.
- "cinematic-extended": Extended software- and hardware-based stabilization that aggressively crops and transforms the video to apply a smooth cinematic stabilization.
- "auto": Indicates that the most appropriate video stabilization mode for the device and format should be chosen automatically
Defined in​
CameraDevice.ts:63
Variables​
VisionCameraProxy​
• Const VisionCameraProxy: TVisionCameraProxy = proxy
Defined in​
FrameProcessorPlugins.ts:97
Functions​
createFrameProcessor​
â–¸ createFrameProcessor(frameProcessor, type): FrameProcessor
Parameters​
| Name | Type | 
|---|---|
| frameProcessor | ( frame:Frame) =>void| (frame:DrawableFrame) =>void | 
| type | "frame-processor"|"skia-frame-processor" | 
Returns​
Defined in​
hooks/useFrameProcessor.ts:5
isErrorWithCause​
â–¸ isErrorWithCause(error): error is ErrorWithCause
Checks if the given error is of type ErrorWithCause
Parameters​
| Name | Type | Description | 
|---|---|---|
| error | unknown | Any unknown object to validate | 
Returns​
error is ErrorWithCause
true if the given error is of type ErrorWithCause
Defined in​
CameraError.ts:177
parsePhysicalDeviceTypes​
â–¸ parsePhysicalDeviceTypes(physicalDeviceTypes): PhysicalCameraDeviceType | LogicalCameraDeviceType
Parses an array of physical device types into a single PhysicalCameraDeviceType or LogicalCameraDeviceType, depending what matches.
Method
Parameters​
| Name | Type | 
|---|---|
| physicalDeviceTypes | PhysicalCameraDeviceType[] | 
Returns​
PhysicalCameraDeviceType | LogicalCameraDeviceType
Defined in​
CameraDevice.ts:26
runAsync​
â–¸ runAsync(frame, func): void
Runs the given function asynchronously, while keeping a strong reference to the Frame.
For example, if you want to run a heavy face detection algorithm
while still drawing to the screen at 60 FPS, you can use runAsync(...)
to offload the face detection algorithm to a separate thread.
Example
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log('New Frame')
  runAsync(frame, () => {
    'worklet'
    const faces = detectFaces(frame)
    const face = [faces0]
    console.log(`Detected a new face: ${face}`)
  })
})
Parameters​
| Name | Type | Description | 
|---|---|---|
| frame | Frame | The current Frame of the Frame Processor. | 
| func | () => void | The function to execute. | 
Returns​
void
Defined in​
FrameProcessorPlugins.ts:179
runAtTargetFps​
â–¸ runAtTargetFps<T>(fps, func): T | undefined
Runs the given function at the given target FPS rate.
For example, if you want to run a heavy face detection algorithm
only once per second, you can use runAtTargetFps(1, ...) to
throttle it to 1 FPS.
Example
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log('New Frame')
  runAtTargetFps(5, () => {
    'worklet'
    const faces = detectFaces(frame)
    console.log(`Detected a new face: ${faces[0]}`)
  })
})
Type parameters​
| Name | 
|---|
| T | 
Parameters​
| Name | Type | Description | 
|---|---|---|
| fps | number | The target FPS rate at which the given function should be executed | 
| func | () => T | The function to execute. | 
Returns​
T | undefined
The result of the function if it was executed, or undefined otherwise.
Defined in​
FrameProcessorPlugins.ts:138
sortDevices​
â–¸ sortDevices(left, right): number
Compares two devices by the following criteria:
- wide-angle-cameras are ranked higher than others
- Devices with more physical cameras are ranked higher than ones with less. (e.g. "Triple Camera" > "Wide-Angle Camera")
Note that this makes the
sort()function descending, so the first element ([0]) is the "best" device.
Example
const devices = camera.devices.sort(sortDevices)
const bestDevice = devices[0]
Method
Parameters​
| Name | Type | 
|---|---|
| left | CameraDevice | 
| right | CameraDevice | 
Returns​
number
Defined in​
utils/FormatFilter.ts:18
sortFormats​
â–¸ sortFormats(left, right): number
Sort formats by resolution and aspect ratio difference (to the Screen size).
Note that this makes the
sort()function descending, so the first element ([0]) is the "best" device.
Parameters​
| Name | Type | 
|---|---|
| left | CameraDeviceFormat | 
| right | CameraDeviceFormat | 
Returns​
number
Defined in​
utils/FormatFilter.ts:72
tryParseNativeCameraError​
â–¸ tryParseNativeCameraError<T>(nativeError): CameraCaptureError | CameraRuntimeError | T
Tries to parse an error coming from native to a typed JS camera error.
Method
Type parameters​
| Name | 
|---|
| T | 
Parameters​
| Name | Type | Description | 
|---|---|---|
| nativeError | T | The native error instance. This is a JSON in the legacy native module architecture. | 
Returns​
CameraCaptureError | CameraRuntimeError | T
A CameraRuntimeError or CameraCaptureError, or the nativeError itself if it's not parsable
Defined in​
CameraError.ts:203
useCameraDevices​
â–¸ useCameraDevices(): CameraDevices
Gets the best available CameraDevice. Devices with more cameras are preferred.
Throws
CameraRuntimeError if no device was found.
Example
const device = useCameraDevice()
// ...
return <Camera device={device} />
Returns​
The best matching CameraDevice.
Defined in​
hooks/useCameraDevices.ts:29
â–¸ useCameraDevices(deviceType): CameraDevices
Gets a CameraDevice for the requested device type.
Throws
CameraRuntimeError if no device was found.
Example
const device = useCameraDevice('wide-angle-camera')
// ...
return <Camera device={device} />
Parameters​
| Name | Type | Description | 
|---|---|---|
| deviceType | PhysicalCameraDeviceType|LogicalCameraDeviceType | Specifies a device type which will be used as a device filter. | 
Returns​
A CameraDevice for the requested device type.
Defined in​
hooks/useCameraDevices.ts:44
useCameraFormat​
â–¸ useCameraFormat(device?): CameraDeviceFormat | undefined
Returns the best format for the given camera device.
This function tries to choose a format with the highest possible photo-capture resolution and best matching aspect ratio.
Parameters​
| Name | Type | Description | 
|---|---|---|
| device? | CameraDevice | The Camera Device | 
Returns​
CameraDeviceFormat | undefined
The best matching format for the given camera device, or undefined if the camera device is undefined.
Defined in​
hooks/useCameraFormat.ts:14
useFrameProcessor​
â–¸ useFrameProcessor(frameProcessor, dependencies): FrameProcessor
Returns a memoized Frame Processor function wich you can pass to the <Camera>.
(See "Frame Processors")
Make sure to add the 'worklet' directive to the top of the Frame Processor function, otherwise it will not get compiled into a worklet.
Example
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  const qrCodes = scanQRCodes(frame)
  console.log(`QR Codes: ${qrCodes}`)
}, [])
Parameters​
| Name | Type | Description | 
|---|---|---|
| frameProcessor | ( frame:Frame) =>void | The Frame Processor | 
| dependencies | DependencyList | The React dependencies which will be copied into the VisionCamera JS-Runtime. | 
Returns​
The memoized Frame Processor.
Defined in​
hooks/useFrameProcessor.ts:42
useSkiaFrameProcessor​
â–¸ useSkiaFrameProcessor(frameProcessor, dependencies): FrameProcessor
Returns a memoized Skia Frame Processor function wich you can pass to the <Camera>.
The Skia Frame Processor allows you to draw anything onto the Frame using react-native-skia.
(See "Frame Processors")
Make sure to add the 'worklet' directive to the top of the Frame Processor function, otherwise it will not get compiled into a worklet.
Example
const frameProcessor = useSkiaFrameProcessor((frame) => {
  'worklet'
  const qrCodes = scanQRCodes(frame)
  frame.drawRect(...)
  console.log(`QR Codes: ${qrCodes}`)
}, [])
Parameters​
| Name | Type | Description | 
|---|---|---|
| frameProcessor | ( frame:DrawableFrame) =>void | The Frame Processor | 
| dependencies | DependencyList | The React dependencies which will be copied into the VisionCamera JS-Runtime. | 
Returns​
The memoized Frame Processor.
Defined in​
hooks/useFrameProcessor.ts:67