diff --git a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm
index bad1b362b087fcc8f5ac190384458743dd62de4e..dbaf3ed4193dac582dab49db486df4926b08b95b 100644
--- a/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm
+++ b/src/plugins/avfoundation/camera/avfimagecapturecontrol.mm
@@ -226,7 +226,8 @@ void AVFImageCaptureControl::cancelCapture()
 
 void AVFImageCaptureControl::updateCaptureConnection()
 {
-    if (m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage)) {
+    if (m_session->videoCaptureDevice()
+        && m_cameraControl->captureMode().testFlag(QCamera::CaptureStillImage)) {
         qDebugCamera() << Q_FUNC_INFO;
         AVCaptureSession *captureSession = m_session->captureSession();
 
diff --git a/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm b/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm
index 02261027d713da1e8c9c65119fcef083593ba5ec..546eabf896cf7898f9659b5562eefa319d15edc2 100644
--- a/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm
+++ b/src/plugins/avfoundation/camera/avfmediarecordercontrol.mm
@@ -364,6 +364,9 @@ void AVFMediaRecorderControl::handleRecordingFailed(const QString &message)
 
 void AVFMediaRecorderControl::setupSessionForCapture()
 {
+    if (!m_session->videoCaptureDevice())
+        return;
+
     //adding movie output causes high CPU usage even when while recording is not active,
     //connect it only while video capture mode is enabled.
     // Similarly, connect the Audio input only in that mode, since it's only necessary