diff --git a/gst/tcp/gstmultifdsink.c b/gst/tcp/gstmultifdsink.c
index af43790..50e62f7 100644
--- a/gst/tcp/gstmultifdsink.c
+++ b/gst/tcp/gstmultifdsink.c
@@ -180,6 +180,8 @@ enum
 
 #define DEFAULT_QOS_DSCP                -1
 
+#define DEFAULT_RESEND_STREAMHEADER      TRUE
+
 enum
 {
   PROP_0,
@@ -211,6 +213,8 @@ enum
 
   PROP_QOS_DSCP,
 
+  PROP_RESEND_STREAMHEADER,
+
   PROP_LAST
 };
 
@@ -489,6 +493,12 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
           "Quality of Service, differentiated services code point (-1 default)",
           -1, 63, DEFAULT_QOS_DSCP, G_PARAM_READWRITE));
 
+  g_object_class_install_property (gobject_class, PROP_RESEND_STREAMHEADER,
+      g_param_spec_boolean ("resend-streamheader", "Resend streamheader",
+          "Resend the streamheader if it changes in the caps",
+          DEFAULT_RESEND_STREAMHEADER,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   /**
    * GstMultiFdSink::add:
    * @gstmultifdsink: the multifdsink element to emit this signal on
@@ -679,6 +689,8 @@ gst_multi_fd_sink_init (GstMultiFdSink * this, GstMultiFdSinkClass * klass)
 
   this->qos_dscp = DEFAULT_QOS_DSCP;
 
+  this->resend_streamheader = DEFAULT_RESEND_STREAMHEADER;
+
   this->header_flags = 0;
 }
 
@@ -1349,14 +1361,22 @@ gst_multi_fd_sink_client_queue_buffer (GstMultiFdSink * sink,
           send_streamheader = TRUE;
         } else {
           /* both old and new caps have streamheader set */
-          sh1 = gst_structure_get_value (s, "streamheader");
-          s = gst_caps_get_structure (caps, 0);
-          sh2 = gst_structure_get_value (s, "streamheader");
-          if (gst_value_compare (sh1, sh2) != GST_VALUE_EQUAL) {
-            GST_DEBUG_OBJECT (sink,
+	  if (!sink->resend_streamheader) {
+	      GST_DEBUG_OBJECT (sink,
+                "[fd %5d] asked to not resend the streamheader, not sending",
+                client->fd.fd);
+	      send_streamheader = FALSE;
+	  }
+	  else {
+	    sh1 = gst_structure_get_value (s, "streamheader");
+	    s = gst_caps_get_structure (caps, 0);
+	    sh2 = gst_structure_get_value (s, "streamheader");
+	    if (gst_value_compare (sh1, sh2) != GST_VALUE_EQUAL) {
+	      GST_DEBUG_OBJECT (sink,
                 "[fd %5d] new streamheader different from old, sending",
                 client->fd.fd);
-            send_streamheader = TRUE;
+              send_streamheader = TRUE;
+	    }
           }
         }
       }
@@ -2662,6 +2682,9 @@ gst_multi_fd_sink_set_property (GObject * object, guint prop_id,
       multifdsink->qos_dscp = g_value_get_int (value);
       setup_dscp (multifdsink);
       break;
+    case PROP_RESEND_STREAMHEADER:
+      multifdsink->resend_streamheader = g_value_get_boolean (value);
+      break;
 
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -2741,6 +2764,9 @@ gst_multi_fd_sink_get_property (GObject * object, guint prop_id, GValue * value,
     case PROP_QOS_DSCP:
       g_value_set_int (value, multifdsink->qos_dscp);
       break;
+    case PROP_RESEND_STREAMHEADER:
+      g_value_set_boolean (value, multifdsink->resend_streamheader);
+      break;
 
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/gst/tcp/gstmultifdsink.h b/gst/tcp/gstmultifdsink.h
index 31e1e57..7444a7d 100644
--- a/gst/tcp/gstmultifdsink.h
+++ b/gst/tcp/gstmultifdsink.h
@@ -234,6 +234,8 @@ struct _GstMultiFdSink {
   gint64 time_min;	/* min time to queue */
   gint   buffers_min;   /* min number of buffers to queue */
 
+  gboolean resend_streamheader; /* resend streamheader if it changes */
+
   /* stats */
   gint buffers_queued;  /* number of queued buffers */
   gint bytes_queued;    /* number of queued bytes */
