diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 0ed56af1bd4b94ffac5fabcc089edf4589a811f2..75ac67c89b543330d44ea4b6f2dade48460ea2cc 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1661,9 +1661,16 @@ static int matroska_parse_tracks(AVFormatContext *s)
         } else if (!strcmp(track->codec_id, "V_QUICKTIME") &&
                    (track->codec_priv.size >= 86)          &&
                    (track->codec_priv.data)) {
-            track->video.fourcc = AV_RL32(track->codec_priv.data);
-            codec_id            = ff_codec_get_id(ff_codec_movvideo_tags,
-                                                  track->video.fourcc);
+            if (track->codec_priv.size == AV_RB32(track->codec_priv.data)) {
+                track->video.fourcc = AV_RL32(track->codec_priv.data + 4);
+                codec_id            = ff_codec_get_id(ff_codec_movvideo_tags,
+                                                      track->video.fourcc);
+            }
+            if (codec_id == AV_CODEC_ID_NONE) {
+                track->video.fourcc = AV_RL32(track->codec_priv.data);
+                codec_id            = ff_codec_get_id(ff_codec_movvideo_tags,
+                                                      track->video.fourcc);
+            }
             if (codec_id == AV_CODEC_ID_NONE) {
                 char buf[32];
                 av_get_codec_tag_string(buf, sizeof(buf), track->video.fourcc);