             detachVideo();
         }
 
+        if (_camera != null) {
+            _camera.removeEventListener(StatusEvent.STATUS, handleCameraStatus);
+        }
+
         _camera = camera;
         if (_camera == null) {
             return;
         }
+        _camera.addEventListener(StatusEvent.STATUS, handleCameraStatus);
+        if (_camera.muted) {
+            return;
+
+        } else if (_correctionWidth == 0) {
+            setCorrection();
+        }
 
         attachVideo();
+    }
+
+    protected function handleCameraStatus (event :StatusEvent) :void
+    {
+        if (event.code == "Camera.Unmuted") {
+            setCorrection();
+            attachVideo();
+
+        } else {
+            detachVideo();
+        }
     }
 
     public function getCameraName () :String

            return null;
        }
        return _bitmap.bitmapData;
    }

    protected function attachVideo () :void

        if (_camera == null) {
            return;
        }
        if (_bitmap != null && _bitmap.parent != null) {
            removeChild(_bitmap);
        }
        if (_video != null && _video.parent == null) {
            addChild(_video);
        }
    }
