diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c
index 8990d6f..39ebecf 100644
--- a/gst/rtsp/gstrtspsrc.c
+++ b/gst/rtsp/gstrtspsrc.c
@@ -1020,7 +1020,9 @@ gst_rtspsrc_create_stream (GstRTSPSrc * src, GstSDPMessage * sdp, gint idx)
     }
   }
   /* collect port number */
-  stream->port = gst_sdp_media_get_port (media);
+  if(src->client_port_range.min == 0){
+    src->client_port_range.min = stream->port = gst_sdp_media_get_port (media);
+  }
 
   /* get control url to construct the setup url. The setup url is used to
    * configure the transport of the stream and is used to identity the stream in
@@ -1550,7 +1552,7 @@ again:
 
   /* set port */
   tmp_rtcp = tmp_rtp + 1;
-  if (src->client_port_range.max > 0 && tmp_rtcp >= src->client_port_range.max)
+  if (src->client_port_range.max > 0 && tmp_rtcp > src->client_port_range.max)
     goto no_ports;
 
   g_object_set (G_OBJECT (udpsrc1), "port", tmp_rtcp, "reuse", FALSE, NULL);
@@ -4732,7 +4734,7 @@ gst_rtspsrc_create_transports_string (GstRTSPSrc * src,
     g_string_append (result, "RTP/AVP");
     if (add_udp_str)
       g_string_append (result, "/UDP");
-    g_string_append (result, ";multicast");
+    g_string_append (result, ";multicast;client_port=%%u1-%%u2");
   } else if (protocols & GST_RTSP_LOWER_TRANS_TCP) {
     GST_DEBUG_OBJECT (src, "adding TCP");
 
