diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 8316c30d764eea85e71bfb2683d925c021a4c948..0b0bf83bb5a95f3155223725434f98f92c50212a 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1146,7 +1146,7 @@ static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
 static int mov_write_tmcd_tag(AVIOContext *pb, MOVTrack *track)
 {
     int64_t pos = avio_tell(pb);
-    int frame_duration = track->enc->time_base.num;
+    int frame_duration = av_rescale(track->timescale, track->enc->time_base.num, track->enc->time_base.den);
     int nb_frames = (track->timescale + frame_duration/2) / frame_duration;
 
     avio_wb32(pb, 0); /* size */
diff --git a/tests/ref/lavf/mov b/tests/ref/lavf/mov
index d7cfbf85e9164b2e32f8116cd2c0a217652b4634..4554ea65d9d6196ab7737784156c5ca02c107706 100644
--- a/tests/ref/lavf/mov
+++ b/tests/ref/lavf/mov
@@ -1,7 +1,7 @@
 fcbe7806047914d9751fd9053009df69 *./tests/data/lavf/lavf.mov
 367365 ./tests/data/lavf/lavf.mov
 ./tests/data/lavf/lavf.mov CRC=0xb2f59ab4
-d023fdd2149f75ef231180b6b0b0a988 *./tests/data/lavf/lavf.mov
+72eac0051107a16e41d5263dab640f26 *./tests/data/lavf/lavf.mov
 358455 ./tests/data/lavf/lavf.mov
 ./tests/data/lavf/lavf.mov CRC=0xb2f59ab4
 cbc587335946df1f08d838f48ef396f0 *./tests/data/lavf/lavf.mov