diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index b1aca88ba235f15918a395a52e872e939fdacfe3..90510de99eba8071308434208332f17af4a1452c 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1461,6 +1461,7 @@ static int mpegts_read_packet(AVFormatContext *s,
                 PESContext *pes = ts->pids[i]->u.pes_filter.opaque;
                 if (pes->state == MPEGTS_PAYLOAD && pes->data_index > 0) {
                     new_pes_packet(pes, pkt);
+                    pes->state = MPEGTS_SKIP;
                     ret = 0;
                     break;
                 }