diff --git a/libavformat/utils.c b/libavformat/utils.c
index 44f5e76c1183c9bc21aa34afa096ae8b3cfcb145..a2d14fbb4b20dbfe880b7b771a191cd99440f16c 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1783,6 +1783,11 @@ int av_find_stream_info(AVFormatContext *ic)
         if (ret < 0) {
             /* EOF or error */
             ret = -1; /* we could not have all the codec parameters before EOF */
+            for(i=0;i<ic->nb_streams;i++) {
+                st = ic->streams[i];
+                if (!has_codec_parameters(&st->codec))
+                    break;
+            }
             if ((ic->ctx_flags & AVFMTCTX_NOHEADER) &&
                 i == ic->nb_streams)
                 ret = 0;