diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index fe41d05506f0affa3e572ebaa33e27d6391c1fd5..5064865f127265483d06951efb0c1a0369a6dbff 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1413,9 +1413,10 @@ static int sdp_read_header(AVFormatContext *s,
     for(i=0;i<rt->nb_rtsp_streams;i++) {
         rtsp_st = rt->rtsp_streams[i];
 
-        snprintf(url, sizeof(url), "rtp://%s:%d?ttl=%d",
+        snprintf(url, sizeof(url), "rtp://%s:%d?localport=%d&ttl=%d",
                  inet_ntoa(rtsp_st->sdp_ip),
                  rtsp_st->sdp_port,
+                 rtsp_st->sdp_port,
                  rtsp_st->sdp_ttl);
         if (url_open(&rtsp_st->rtp_handle, url, URL_RDWR) < 0) {
             err = AVERROR_INVALIDDATA;