Video won't play in Quicktime

3.9k views Asked by At

I'm writing a multiplexer which takes mpeg4 frames (and h264) and puts them in an mp4 container. The video (test1.mp4) I've created successfully plays in Windows media player and VLC but will not play in Quicktime. I've double checked all the atoms and their fields and everything looks correct. I've also successfully created two other videos (1 mpeg4 and 1 h264) with the same multiplexer library and both those videos played fine in WMP, VLC and QT. One of the areas where I suspect their might be a problem is the mp4v atom and it's esds child atom. The esds descriptor I got from ISO 14496-1 so I'm not completely sure about it but it did work on the first mpeg4 video I tried.

Can anyone offer an suggestions as to how I might go about figuring this out? From what I can see, QuickTime does not offer any sort of debug logging and I'm somewhat stuck. Thanks!

Sorry for the horrible download link.

Information:
640x480 resolution
10fps
148 frames

Atom structure:

mp4 debug: |    + ftyp size 24
mp4 debug: |    + mdat size 1149537
mp4 debug: |    + moov size 1315
mp4 debug: |    |    + mvhd size 108
mp4 debug: |    |    + trak size 1199
mp4 debug: |    |    |    + tkhd size 92
mp4 debug: |    |    |    + mdia size 1099
mp4 debug: |    |    |    |    + mdhd size 32
mp4 debug: |    |    |    |    + hdlr size 58
mp4 debug: |    |    |    |    + minf size 1001
mp4 debug: |    |    |    |    |    + vmhd size 20
mp4 debug: |    |    |    |    |    + dinf size 36
mp4 debug: |    |    |    |    |    |    + dref size 28
mp4 debug: |    |    |    |    |    |    |    + url  size 12
mp4 debug: |    |    |    |    |    + stbl size 937
mp4 debug: |    |    |    |    |    |    + stsd size 169
mp4 debug: |    |    |    |    |    |    |    + mp4v size 153
mp4 debug: |    |    |    |    |    |    |    |    + esds size 67
mp4 debug: |    |    |    |    |    |    + stts size 24
mp4 debug: |    |    |    |    |    |    + stss size 76
mp4 debug: |    |    |    |    |    |    + stsc size 28
mp4 debug: |    |    |    |    |    |    + stsz size 612
mp4 debug: |    |    |    |    |    |    + stco size 20
2

There are 2 answers

0
Stu Thompson On

QuickTime player is very, very sensitive to what it will and will not play. While your file is an MPEG-4 file, and the CODEC is h.264, it is an unusual profile for h.264.

(Note: The spec does not require players to support all profiles.) Apple's players are unusually picky about what they will and will not work with.

Your files's h264 profile: Advanced Simple Profile @ L5

Apple devices, including seemingly QuickTime, have a bias for

  • Baseline Profile Level 3.0 (iPhone/iPod Touch),
  • Main Profile Level 3.1 (iPad)

The solution? Reencode your video with Baseline Profile Level 3.0 to be safe

0
user858518 On

I had a similar problem (MPEG-4 part 2 in a .mov container playing in VLC but not QuickTime), and I fixed it by replacing the apparently invalid ESDS with a valid ESDS from a similar .mov.

This could be the problem here.