diff --git a/libavformat/hls.c b/libavformat/hls.c
index 9aef5e07f39f4543e859d4447d3dc91aee073061..ea16f8abf3514bfdd75fba0edc7430ec46d2cbdd 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -527,6 +527,11 @@ static int hls_read_header(AVFormatContext *s)
         v->ctx->pb       = &v->pb;
         v->stream_offset = stream_offset;
         ret = avformat_open_input(&v->ctx, v->segments[0]->url, in_fmt, NULL);
+        if (ret < 0)
+            goto fail;
+
+        v->ctx->ctx_flags &= ~AVFMTCTX_NOHEADER;
+        ret = avformat_find_stream_info(v->ctx, NULL);
         if (ret < 0)
             goto fail;
         snprintf(bitrate_str, sizeof(bitrate_str), "%d", v->bandwidth);