diff --git a/libavformat/segment.c b/libavformat/segment.c
index bdb5254de4c4804ef6f896ddc3b52bddd61b5957..fb5a22e6bc3129a25088ba8d720463f3c2c549be 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -111,6 +111,7 @@ static int segment_end(AVFormatContext *oc, int write_trailer)
 {
     int ret = 0;
 
+    av_write_frame(oc, NULL); /* Flush any buffered data */
     if (write_trailer)
         av_write_trailer(oc);
     avio_close(oc->pb);