diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index 02f2a299c9564e1c1483eee1c4c90b03ea7a289e..cccbf858c7a0f9512a47953939616f52d4668e44 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -34,6 +34,7 @@
 
 #define ASF_INDEXED_INTERVAL    10000000
 #define ASF_INDEX_BLOCK         (1<<9)
+#define ASF_PAYLOADS_PER_PACKET 63
 
 #define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE 0x2
 #define ASF_PACKET_ERROR_CORRECTION_FLAGS          \
@@ -858,6 +859,8 @@ static void put_frame(AVFormatContext *s, ASFStream *stream, AVStream *avst,
             flush_packet(s);
         else if (asf->packet_size_left <= (PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS + PACKET_HEADER_MIN_SIZE + 1))
             flush_packet(s);
+        else if (asf->packet_nb_payloads == ASF_PAYLOADS_PER_PACKET)
+            flush_packet(s);
     }
     stream->seq++;
 }