diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index db1573048cf155081a53ef738a4d45b1cb9c81fd..b9c700f73b7c56e089ff0cbf8aee9bea47737909 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -717,6 +717,9 @@ void rtsp_parse_line(RTSPHeader *reply, const char *buf)
         reply->seq = strtol(p, NULL, 10);
     } else if (av_stristart(p, "Range:", &p)) {
         rtsp_parse_range_npt(p, &reply->range_start, &reply->range_end);
+    } else if (av_stristart(p, "RealChallenge1:", &p)) {
+        skip_spaces(&p);
+        av_strlcpy(reply->real_challenge, p, sizeof(reply->real_challenge));
     }
 }
 
diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h
index 288f69776ddebe990bb75a03ac0d9520380cd3da..1923acbbc80181802bd119379932ff0170272f85 100644
--- a/libavformat/rtsp.h
+++ b/libavformat/rtsp.h
@@ -62,6 +62,7 @@ typedef struct RTSPHeader {
     RTSPTransportField transports[RTSP_MAX_TRANSPORTS];
     int seq; /**< sequence number */
     char session_id[512];
+    char real_challenge[64]; /**< the RealChallenge1 field from the server */
 } RTSPHeader;
 
 /** the callback can be used to extend the connection setup/teardown step */