diff -Naur a/libavformat/movenc.c b/libavformat/movenc.c
--- a/libavformat/movenc.c	2017-08-14 14:29:04.837292418 -0400
+++ b/libavformat/movenc.c	2017-08-14 14:41:12.574735168 -0400
@@ -1074,6 +1074,22 @@
     return update_size(pb, pos);
 }
 
+static int mov_write_btrt_tag(AVIOContext *pb, MOVTrack *track)
+{
+    int64_t pos = avio_tell(pb);
+    AVCPBProperties *props;
+    props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES, NULL);
+    unsigned avg_bitrate;
+    avg_bitrate = compute_avg_bitrate(track);
+
+    avio_wb32(pb, 0);
+    ffio_wfourcc(pb, "btrt");
+    avio_wb32(pb, props ? props->buffer_size : 0);
+    avio_wb32(pb, props ? FFMAX3(props->max_bitrate, props->avg_bitrate, avg_bitrate) : FFMAX(track->par->bit_rate, avg_bitrate));
+    avio_wb32(pb, avg_bitrate);
+    return update_size(pb, pos);
+}
+
 static int mov_write_vpcc_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track)
 {
     int64_t pos = avio_tell(pb);
@@ -1917,6 +1933,7 @@
         mov_write_hvcc_tag(pb, track);
     else if (track->par->codec_id == AV_CODEC_ID_H264 && !TAG_IS_AVCI(track->tag)) {
         mov_write_avcc_tag(pb, track);
+        mov_write_btrt_tag(pb, track);
         if (track->mode == MODE_IPOD)
             mov_write_uuid_tag_ipod(pb);
     } else if (track->par->codec_id == AV_CODEC_ID_VP9) {
