diff --git a/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c b/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c
index ca2d11f560..b60f73b882 100644
--- a/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c
+++ b/subprojects/gst-plugins-good/gst/multifile/gstimagesequencesrc.c
@@ -489,24 +489,25 @@ static gint
 gst_image_sequence_src_count_frames (GstImageSequenceSrc * self,
     gboolean can_read)
 {
+  gchar *previous_filename = NULL;
   if (can_read && self->stop_index < 0 && self->path) {
     gint i;
 
     for (i = self->start_index;; i++) {
       gchar *filename = g_strdup_printf (self->path, i);
-
-      if (!g_file_test (filename, G_FILE_TEST_IS_REGULAR)) {
+      if (!g_file_test (filename, G_FILE_TEST_IS_REGULAR)
+          || !g_strcmp0 (previous_filename, filename)) {
         i--;
         g_free (filename);
         break;
       }
-
-      g_free (filename);
+      g_free (previous_filename);
+      previous_filename = filename;
     }
     if (i > self->start_index)
       self->stop_index = i;
   }
-
+  g_free (previous_filename);
   if (self->stop_index >= self->start_index)
     self->n_frames = self->stop_index - self->start_index + 1;
   return self->n_frames;