diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 098e2d2681a7bc43346237a267462d0aa147b663..f878ced0fab4de43976184376e9b10cab309e306 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -3313,7 +3313,8 @@ static int mov_write_traf_tag(AVIOContext *pb, MOVMuxContext *mov,
     ffio_wfourcc(pb, "traf");
 
     mov_write_tfhd_tag(pb, mov, track, moof_offset);
-    mov_write_tfdt_tag(pb, track);
+    if (mov->mode != MODE_ISM)
+        mov_write_tfdt_tag(pb, track);
     mov_write_trun_tag(pb, mov, track, moof_size);
     if (mov->mode == MODE_ISM) {
         mov_write_tfxd_tag(pb, track);
@@ -3488,7 +3489,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s)
 
     // We add tfdt atoms when fragmenting, signal this with the iso6 compatible
     // brand. This is compatible with users that don't understand tfdt.
-    if (mov->flags & FF_MOV_FLAG_FRAGMENT)
+    if (mov->flags & FF_MOV_FLAG_FRAGMENT && mov->mode != MODE_ISM)
         ffio_wfourcc(pb, "iso6");
 
     if (mov->mode == MODE_3GP)
diff --git a/tests/ref/lavf/ismv b/tests/ref/lavf/ismv
index c87cf6e471f455b04a8bd93cabf46f384f8dec89..2c8d92c2924646964574500342390209aac63982 100644
--- a/tests/ref/lavf/ismv
+++ b/tests/ref/lavf/ismv
@@ -1,9 +1,9 @@
-56193aebd2845871f4e91956b3e4dea5 *./tests/data/lavf/lavf.ismv
-312610 ./tests/data/lavf/lavf.ismv
+17b0b8eff852edd25fa38aed062689d7 *./tests/data/lavf/lavf.ismv
+312546 ./tests/data/lavf/lavf.ismv
 ./tests/data/lavf/lavf.ismv CRC=0xb7d29d29
-19c7e128c52d7a1d7a1921d60774a785 *./tests/data/lavf/lavf.ismv
-321516 ./tests/data/lavf/lavf.ismv
+543e5146df7bd4b7eb7edc94e0034ad9 *./tests/data/lavf/lavf.ismv
+321452 ./tests/data/lavf/lavf.ismv
 ./tests/data/lavf/lavf.ismv CRC=0x33834815
-56193aebd2845871f4e91956b3e4dea5 *./tests/data/lavf/lavf.ismv
-312610 ./tests/data/lavf/lavf.ismv
+17b0b8eff852edd25fa38aed062689d7 *./tests/data/lavf/lavf.ismv
+312546 ./tests/data/lavf/lavf.ismv
 ./tests/data/lavf/lavf.ismv CRC=0xb7d29d29