Today I was held up by our Flash video player not progressively downloading a seemingly regular F4V video uploaded by a client. The symptoms of this meant that the person watching the video would get a blank screen up until 100% of the video had downloaded, often minutes later.
I used G-Spot to determine that the video and audio codecs used within the video were standard to Flash 9+ H.264 and AAC. This was unusual as I had tested with this type of video before, and the videos progressively loaded as expected.
After some searching, it is the Moov atom that is responsible. It is needed to be at the beginning of the file for the player to index the video keyframes. Major video editing software packages (including Premier, After Effects and Final Cut Pro) by default place this critical information at the end of the file.
There are a few small tools out there to simply replace the atom to the front of the file including:
- MP4Box - An open source MP4 multiplexer that can move the atom through a simple CLI command:
MP4Box -inter 0 test.mp4
- QTIndexSwapper - An Adobe Air application that does the same thing. It seems to be a very popular tool that is still in development, however for the files I was using I found it did not work and errored: "ERROR: The MOOV atom is not located at the end of the file, the file is ready for progressive download or it is a invalid file"
Like what you've read?