diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 75da12a3ccc2e5437f93c8bf42f9e88a00b2eb8a..6002c9ada06f08ae5bfcf92c7c1d1a04eb7d9f5f 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1064,6 +1064,11 @@ static void matroska_execute_seekhead(MatroskaDemuxContext *matroska)
     MatroskaLevel level;
     int i;
 
+    // we should not do any seeking in the streaming case
+    if (url_is_streamed(matroska->ctx->pb) ||
+        (matroska->ctx->flags & AVFMT_FLAG_IGNIDX))
+        return;
+
     for (i=0; i<seekhead_list->nb_elem; i++) {
         int64_t offset = seekhead[i].pos + matroska->segment_start;