vstinner / hachoir

Hachoir is a Python library to view and edit a binary stream field by field
http://hachoir.readthedocs.io/
GNU General Public License v2.0
604 stars 70 forks source link

Allow QuickTime movies to start with "skip" atom #90

Closed jangrudo closed 1 year ago

jangrudo commented 1 year ago

I've got some *.mov files from a (rather old) Kodak EasyShare C533 camera, which have "skip" as the container's first atom, rather than "ftyp", "moov", or "free". They therefore don't pass the check in hachoir.parser.container.MP4File.validate(). This initial "skip" atom seems to contain some metadata like camera model name, and is followed by an "mdat" occupying most of the file, and then finally by a "moov".

I use hachoir to extract movie's duration and timestamp, and it works fine if validate() method is tweaked to allow "skip" as the initial atom. (Apparently, all the needed info is in "moov" at the end of the file).

Admittedly, "skip" doesn't look very characteristic of a movie file, but we already have "free" on the list, so it shouldn't make things much worse.

vstinner commented 1 year ago

The pep8 test was broken in the main branch. I fixed it. Can you please rebase your PR on the main branch to fix the CI?

vstinner commented 1 year ago

Tests pass, I'm happy, I merged your PR. Thanks for your contribution!

jangrudo commented 1 year ago

Thank you very much for the library!