Prerequisites
Reproduction
https://github.com/mrousavy/react-native-vision-camera
Steps to reproduce
Just look at my error you might get the issue
What did you expect to happen?
It should take photos or videos of two camera view
What actually happened?
I got this error when I tried to capture a photo for both outputs
LOG 🚀 - MultiCameraScreen - e: [Error: java.lang.IllegalArgumentException: androidx.camera.core.internal.CameraUseCaseAdapter$CameraException: java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 2. May be attempting to bind too many use cases. Existing surfaces: []. New configs: [androidx.camera.core.impl.PreviewConfig@5279011, androidx.camera.core.impl.ImageCaptureConfig@de3b576, androidx.camera.core.impl.PreviewConfig@a826777, androidx.camera.core.impl.ImageCaptureConfig@2167fe4]. GroupableFeature settings: FeatureSettings(cameraMode=0, requiredMaxBitDepth=8, hasVideoCapture=false, videoStabilization=UNSPECIFIED, isUltraHdrOn=false, isHighSpeedOn=false, isFeatureComboInvocation=false, requiresFeatureComboQuery=false, targetFpsRange=[0, 0], isStrictFpsRequired=false).
at androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:402)
at androidx.camera.lifecycle.LifecycleCameraProviderImpl.bindToLifecycleInternal(LifecycleCameraProviderImpl.kt:695)
at androidx.camera.lifecycle.LifecycleCameraProviderImpl.bindToLifecycleInternal$default(LifecycleCameraProviderImpl.kt:597)
at androidx.camera.lifecycle.LifecycleCameraProviderImpl.bindToLifecycle(LifecycleCameraProviderImpl.kt:402)
at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.kt:371)
at com.margelo.nitro.camera.hybrids.HybridCameraSession$configure$1.invokeSuspend(HybridCameraSession.kt:126)
at com.margelo.nitro.camera.hybrids.HybridCameraSession$configure$1.invoke(Unknown Source:8)
at com.margelo.nitro.camera.hybrids.HybridCameraSession$configure$1.invoke(Unknown Source:2)
at com.margelo.nitro.core.Promise$Companion$async$1.invokeSuspend(Promise.kt:146)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Caused by: androidx.camera.core.internal.CameraUseCaseAdapter$CameraException: java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 2. May be attempting to bind too many use cases. Existing surfaces: []. New configs: [androidx.camera.core.impl.PreviewConfig@5279011, androidx.camera.core.impl.ImageCaptureConfig@de3b576, androidx.camera.core.impl.PreviewConfig@a826777, androidx.camera.core.impl.ImageCaptureConfig@2167fe4]. GroupableFeature settings: FeatureSettings(cameraMode=0, requiredMaxBitDepth=8, hasVideoCapture=false, videoStabilization=UNSPECIFIED, isUltraHdrOn=false, isHighSpeedOn=false, isFeatureComboInvocation=false, requiresFeatureComboQuery=false, targetFpsRange=[0, 0], isStrictFpsRequired=false).
at androidx.camera.core.internal.CameraUseCaseAdapter.addUseCases(CameraUseCaseAdapter.java:385)
at androidx.camera.lifecycle.LifecycleCamera.bind(LifecycleCamera.java:307)
at androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:400)
... 18 more
Caused by: java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 2. May be attempting to bind too many use cases. Existing surfaces: []. New configs: [androidx.camera.core.impl.PreviewConfig@5279011, androidx.camera.core.impl.ImageCaptureConfig@de3b576, androidx.camera.core.impl.PreviewConfig@a826777, androidx.camera.core.impl.ImageCaptureConfig@2167fe4]. GroupableFeature settings: FeatureSettings(cameraMode=0, requiredMaxBitDepth=8, hasVideoCapture=false, videoStabilization=UNSPECIFIED, isUltraHdrOn=false, isHighSpeedOn=false, isFeatureComboInvocation=false, requiresFeatureComboQuery=false, targetFpsRange=[0, 0], isStrictFpsRequired=false).
at androidx.camera.camera2.adapter.SupportedSurfaceCombination.resolveSpecsBySettings(SupportedSurfaceCombination.kt:622)
at androidx.camera.camera2.adapter.SupportedSurfaceCombination.resolveSpecsByCheckingMethod(SupportedSurfaceCombination.kt:531)
at androidx.camera.camera2.adapter.SupportedSurfaceCombination.getSuggestedStreamSpecifications(SupportedSurfaceCombination.kt:485)
at androidx.camera.camera2.adapter.CameraSurfaceAdapter.getSuggestedStreamSpecs(CameraSurfaceAdapter.kt:252)
at androidx.camera.core.internal.StreamSpecsCalculatorImpl.calculateSuggestedStreamSpecsForNewUseCases(StreamSpecsCalculator.kt:292)
at androidx.camera.core.internal.StreamSpecsCalculatorImpl.calculateSuggestedStreamSpecs(StreamSpecsCalculator.kt:158)
at androidx.camera.core.internal.CameraUseCaseAdapter.calculateAndValidateUseCases(CameraUseCaseAdapter.java:514)
at androidx.camera.core.internal.CameraUseCaseAdapter.calculateAndValidateUseCases(CameraUseCaseAdapter.java:546)
at androidx.camera.core.internal.CameraUseCaseAdapter.addUseCases(CameraUseCaseAdapter.java:378)
... 20 more
]
const frontDevice = useCameraDevice("back");
const device = useCameraDevice("back");
const devices = useCameraDevices();
const backDevice = devices.find((d) => d.type === "triple") || device;
// const telephotoDevice = devices.find((d) => d.type === "telephoto") || device;
const frontPreviewOutput = usePreviewOutput();
const backPreviewOutput = usePreviewOutput();
const frontPhotoOutput = usePhotoOutput();
const backPhotoOutput = usePhotoOutput();
const startSession = useCallback(async () => {
if (!frontDevice || !backDevice) return;
setStatus("loading");
setErrorMsg(null);
if (!VisionCamera.supportsMultiCamSessions) {
setStatus("unsupported");
return;
}
const session = await VisionCamera.createCameraSession(true);
sessionRef.current = session;
try {
const [frontController, backController] = await session.configure([
// Front camera
{
input: frontDevice,
outputs: [
{ output: frontPreviewOutput, mirrorMode: "off" },
{ output: frontPhotoOutput, mirrorMode: "off" },
// { output: frontRecorder.videoOutput, mirrorMode: "off" },
],
constraints: [],
},
// Back camera
{
input: backDevice,
outputs: [
{ output: backPreviewOutput, mirrorMode: "off" },
{ output: backPhotoOutput, mirrorMode: "off" },
// { output: backRecorder.videoOutput, mirrorMode: "off" },
],
constraints: [],
},
]);
setStatus("running");
} catch (e: unknown) {
console.log("🚀 - MultiCameraScreen - e:", e);
const msg = e instanceof Error ? e.message : String(e);
setErrorMsg(msg);
setStatus("error");
session.dispose();
return;
}
await session.start();
session.addOnErrorListener((error) => {
console.log("Session error:", error);
setErrorMsg(error.message);
// Handle the error, e.g. show an error message, stop the session, etc.
setStatus("error");
});
}, [frontDevice, backDevice, frontPreviewOutput, backPreviewOutput]);
Affected platforms
Android (device)
Device(s) affected
Samsung S24
VisionCamera version
^5.0.7
React Native version
0.83.4
React Native architecture
New Architecture (Fabric / bridgeless)
Features being used
Relevant logs / stack trace
Additional context
No response
Submission
Prerequisites
Reproduction
https://github.com/mrousavy/react-native-vision-camera
Steps to reproduce
Just look at my error you might get the issue
What did you expect to happen?
It should take photos or videos of two camera view
What actually happened?
I got this error when I tried to capture a photo for both outputs
Affected platforms
Android (device)
Device(s) affected
Samsung S24
VisionCamera version
^5.0.7
React Native version
0.83.4
React Native architecture
New Architecture (Fabric / bridgeless)
Features being used
Relevant logs / stack trace
Additional context
No response
Submission