diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index f129d90..ecf6ed5 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -169,6 +169,9 @@ cheese_camera_bus_sync_handler (GstBus *bus, GstMessage *message, CheeseCamera *
   return GST_BUS_DROP;
 }
 
+
+static gboolean cheese_camera_create_video_save_bin (CheeseCamera *camera, GError **error);
+
 static void
 cheese_camera_change_sink (CheeseCamera *camera, GstElement *src,
                            GstElement *new_sink, GstElement *old_sink)
@@ -182,6 +185,14 @@ cheese_camera_change_sink (CheeseCamera *camera, GstElement *src,
   gst_object_ref (old_sink);
   gst_bin_remove (GST_BIN (priv->pipeline), old_sink);
 
+  if (old_sink == priv->video_save_bin)
+  {
+     g_object_unref (priv->video_save_bin);
+     if (!cheese_camera_create_video_save_bin (camera, NULL))
+        g_warning ("Failed to create video save bin");
+     old_sink = priv->video_save_bin;
+  }
+
   gst_bin_add (GST_BIN (priv->pipeline), new_sink);
   gst_element_link (src, new_sink);
 
