diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index f27b70c0c6..62d25c8802 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -136,6 +136,7 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, AVStream
     int64_t *times = NULL;
     int64_t *filepositions = NULL;
     int ret = 0;
+    int64_t initial_pos = avio_tell(ioc);
 
     while (avio_tell(ioc) < max_pos - 2 && amf_get_string(ioc, str_val, sizeof(str_val)) > 0) {
         int64_t* current_array;
@@ -183,7 +184,7 @@ static int parse_keyframes_index(AVFormatContext *s, AVIOContext *ioc, AVStream
 finish:
     av_freep(&times);
     av_freep(&filepositions);
-    avio_seek(ioc, max_pos, SEEK_SET);
+    avio_seek(ioc, initial_pos, SEEK_SET);
     return ret;
 }