diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c
index a507d4e..ca02d1e 100644
--- a/gst/rtsp/gstrtspsrc.c
+++ b/gst/rtsp/gstrtspsrc.c
@@ -173,6 +173,7 @@ gst_rtsp_src_buffer_mode_get_type (void)
 #define DEFAULT_USER_PW          NULL
 #define DEFAULT_BUFFER_MODE      BUFFER_MODE_AUTO
 #define DEFAULT_PORT_RANGE       NULL
+#define DEFAULT_DISABLE_KEEP_ALIVE FALSE
 
 enum
 {
@@ -194,6 +195,7 @@ enum
   PROP_BUFFER_MODE,
   PROP_PORT_RANGE,
   PROP_UDP_BUFFER_SIZE,
+  PROP_DISABLE_KEEP_ALIVE,
   PROP_LAST
 };
 
@@ -416,6 +418,11 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
           "RTSP location URI user password for authentication", DEFAULT_USER_PW,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class, PROP_DISABLE_KEEP_ALIVE,
+      g_param_spec_boolean ("disable-keep-alive", "Disable Keep Alive",
+          "Disable sending keep alive",
+          DEFAULT_DISABLE_KEEP_ALIVE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
   /**
    * GstRTSPSrc::buffer-mode:
    *
@@ -495,6 +502,8 @@ gst_rtspsrc_init (GstRTSPSrc * src, GstRTSPSrcClass * g_class)
   src->client_port_range.max = 0;
   src->udp_buffer_size = DEFAULT_UDP_BUFFER_SIZE;
 
+  src->disable_keep_alive = FALSE;
+
   /* get a list of all extensions */
   src->extensions = gst_rtsp_ext_list_get ();
 
@@ -690,6 +699,9 @@ gst_rtspsrc_set_property (GObject * object, guint prop_id, const GValue * value,
     case PROP_UDP_BUFFER_SIZE:
       rtspsrc->udp_buffer_size = g_value_get_int (value);
       break;
+    case PROP_DISABLE_KEEP_ALIVE:
+      rtspsrc->disable_keep_alive = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -782,6 +794,9 @@ gst_rtspsrc_get_property (GObject * object, guint prop_id, GValue * value,
     case PROP_UDP_BUFFER_SIZE:
       g_value_set_int (value, rtspsrc->udp_buffer_size);
       break;
+    case PROP_DISABLE_KEEP_ALIVE:
+      g_value_set_boolean (value, rtspsrc->disable_keep_alive);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -3404,6 +3419,12 @@ gst_rtspsrc_send_keep_alive (GstRTSPSrc * src)
   GstRTSPMethod method;
   gchar *control;
 
+  if(src->disable_keep_alive)
+  {
+    gst_rtsp_connection_reset_timeout (src->connection);
+    return GST_RTSP_OK;
+  }
+
   GST_DEBUG_OBJECT (src, "creating server keep-alive");
 
   /* find a method to use for keep-alive */
diff --git a/gst/rtsp/gstrtspsrc.h b/gst/rtsp/gstrtspsrc.h
index 00861b6..638f625 100644
--- a/gst/rtsp/gstrtspsrc.h
+++ b/gst/rtsp/gstrtspsrc.h
@@ -219,6 +219,7 @@ struct _GstRTSPSrc {
   gint              buffer_mode;
   GstRTSPRange      client_port_range;
   gint              udp_buffer_size;
+  gboolean          disable_keep_alive;
 
   /* state */
   GstRTSPState       state;
