diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index fd15370331f653d932865b3ae22dd0b3d3fec96a..c2d34956e88a582c0646102608423cb748c8ac23 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1393,9 +1393,9 @@ static int mov_write_ftyp_tag(ByteIOContext *pb, AVFormatContext *s)
     put_tag(pb, "ftyp");
 
     if (mov->mode == MODE_3GP)
-        put_tag(pb, "3gp4");
+        put_tag(pb, has_h264 ? "3gp6":"3gp4");
     else if (mov->mode & MODE_3G2)
-        put_tag(pb, "3g2a");
+        put_tag(pb, has_h264 ? "3g2b":"3g2a");
     else if (mov->mode == MODE_PSP)
         put_tag(pb, "MSNV");
     else if (mov->mode == MODE_MP4)
@@ -1415,9 +1415,9 @@ static int mov_write_ftyp_tag(ByteIOContext *pb, AVFormatContext *s)
     }
 
     if (mov->mode == MODE_3GP)
-        put_tag(pb, "3gp4");
+        put_tag(pb, has_h264 ? "3gp6":"3gp4");
     else if (mov->mode & MODE_3G2)
-        put_tag(pb, "3g2a");
+        put_tag(pb, has_h264 ? "3g2b":"3g2a");
     else if (mov->mode == MODE_PSP)
         put_tag(pb, "MSNV");
     else if (mov->mode == MODE_MP4)