diff --git a/docs/docs/guides/FORMATS.mdx b/docs/docs/guides/FORMATS.mdx index c6d00b781c..455b77a76d 100644 --- a/docs/docs/guides/FORMATS.mdx +++ b/docs/docs/guides/FORMATS.mdx @@ -181,13 +181,21 @@ const format = getCameraFormat(device, Templates.Snapchat) ## Camera Props -The `Camera` View provides a few props that depend on the specified `format`. For example, you can only set the `fps` prop to a value that is supported by the current `format`. So if you have a format that supports 240 FPS, you can set the `fps` to `240`: +The `Camera` View provides a few props that depend on the specified `format`. + +### FPS + +For example, a camera device might have a 1080p and a 4k format, but the 4k one can only stream at 60 FPS, while the 1080p format can do 240 FPS. + +To find a 240 FPS format we can use the [`useCameraFormat(..)`](/docs/api#usecameraformat) hook to find a suitable format, then pass it's maximum supported FPS as the Camera's target FPS: ```tsx function App() { - // ... - const format = ... - const fps = format.maxFps >= 240 ? 240 : format.maxFps + const device = ... + const format = useCameraFormat(device, [ + { fps: 240 } + ]) + const fps = format.maxFps // <-- 240 FPS, or lower if 240 FPS is not available return ( + ) +} +``` + +### Other Props + Other props that depend on the `format`: -* `fps`: Specifies the frame rate to use * `videoHdr`: Enables HDR video capture and preview * `photoHdr`: Enables HDR photo capture -* `lowLightBoost`: Enables a night-mode/low-light-boost for photo or video capture and preview * `videoStabilizationMode`: Specifies the video stabilization mode to use for the video pipeline -* `pixelFormat`: Specifies the pixel format to use for the video pipeline
diff --git a/docs/docs/guides/PREVIEW.mdx b/docs/docs/guides/PREVIEW.mdx index ad904d437a..eafad79bad 100644 --- a/docs/docs/guides/PREVIEW.mdx +++ b/docs/docs/guides/PREVIEW.mdx @@ -42,14 +42,16 @@ To get notified about pauses in the preview view, use the [`onPreviewStarted`](/ /> ``` -### FPS +### Preview Frame Rate (FPS) -The Preview view is running at the same frame rate as the Video stream, configured by the [`fps`](/docs/api/interfaces/CameraProps#fps) prop, or 30 FPS by default. +The Preview view is running at the same frame rate as the Video stream, configured by the [`fps`](/docs/api/interfaces/CameraProps#fps) prop, or a value close to 30 FPS by default. ```tsx ``` +See [FPS](formats#fps) for more information. + ### Resolution On iOS, the Video resolution also determines the Preview resolution, so if you Camera format has a low Video resolution, your Preview will also be in low resolution: diff --git a/docs/docs/guides/RECORDING_VIDEOS.mdx b/docs/docs/guides/RECORDING_VIDEOS.mdx index 514c408610..82c8b18869 100644 --- a/docs/docs/guides/RECORDING_VIDEOS.mdx +++ b/docs/docs/guides/RECORDING_VIDEOS.mdx @@ -171,6 +171,16 @@ camera.current.startRecording({ }) ``` +### Video Frame Rate (FPS) + +The resulting video will be recorded at the frame rate provided to the [`fps`](/docs/api/interfaces/CameraProps#fps) prop. + +```tsx + +``` + +See [FPS](formats#fps) for more information. + ## Saving the Video to the Camera Roll Since the Video is stored as a temporary file, you need save it to the Camera Roll to permanentely store it. You can use [react-native-cameraroll](https://github.com/react-native-cameraroll/react-native-cameraroll) for this: diff --git a/package/android/src/main/java/com/mrousavy/camera/core/CameraConfiguration.kt b/package/android/src/main/java/com/mrousavy/camera/core/CameraConfiguration.kt index 22eb8a2dee..745ed9d214 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/CameraConfiguration.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/CameraConfiguration.kt @@ -20,6 +20,8 @@ data class CameraConfiguration( var video: Output