PDA

View Full Version : Quicktime files metadata


iw2z
11th August 2009, 17:01
hi
i'm not sure of this is the right place for this question, but i'll ask anyway...
i've been working on an application that will give me some general info about a quicktime video file (Dimensions, Frame Rate, Compressor Name, Audio channels...)

so i read the "Quicktime File Format Specification" document from apple.com, and i did get to read most of the data i need from the corresponding atoms (atoms are the building units of a quicktime file), but i came across some files that didn't have these atoms at all (since most of these atoms are optional)

examples include
- 'stsd' atoms hold the compressor name, but it's optional
- 'stts' atoms hold data vital to the frame rate calculation, also optional
- 'stss' atoms hold data regarding key frames, also optional

and even though one of the atoms i need isn't even optional, i still couldn't find it ('tkhd' for the video dimensions)

but when i open these files (which missing atoms) they work well, and when i open them in VLC player, i can see the data i need in the 'media information' provided by the player

so my question is: how can i get the data i need even when the atoms aren't available? (it must be doable, VLC proves that!)

Ritsuka
11th August 2009, 17:10
QTVR or sprite tracks are strange beast. You need to handle them separately. (if that is what your file contains). What does QuickTime says?

iw2z
16th August 2009, 08:03
i did a little extra goofing around, the file i have has cmov (compressed movie) atom which contains a dcom and a cmvd atoms, but i'm clueless after that, any suggestions?

iw2z
17th August 2009, 16:53
ok i finally got this problem solved, so here's the solution in case someone else needs it:

having a 'cmov' (compressed movie) atom means the movie resource has been compressed (ok that's really obvious!)
now this 'cmov' atom contains 2 other atoms:
1-'dcom' (data compression) atom
2-'cmvd' (compressed movie data) atom

dcom only contains 4 bytes for the size, 4 bytes for the atom type, and 4 bytes for the compression algorithm
(all files i came across had 'zlib' as the compression algo)

cmvd contains 4 bytes for the size, 4 bytes for the atom type, 4 bytes for the size of the uncompressed content, and the compressed content itself

so java standard library already contains a decompressor for zlib and voila, the uncompressed data contains the missing atoms :)