Le programme hachoir-metadata se prépare à passer en version 1.0. Pour cela, il a besoin d'être testé sur beaucoup de fichiers pour détecter un maximum de bugs. Utilisez cette archive clé-en-main (rien à installer mise à part Python 2.4) :
http://www.haypocalc.com/tmp/hachoir-metadata-svn1335.tar.bz(...)
Décompressez l'archive, entrez dans le répertoire créer, et utilisez le script hachoir-metadata que vous y trouverez. Vous pouvez les traiter plusieurs fichiers en même temps.
Spécifications :
* Formats supportés : archive (bz2, gz, tar, zip), audio (au, cda, mp1, mp2, mp3, ogg, wav, wma), image (bmp, gif, ico, jpg, pcx, png, tiff, xcf), vidéo (asf, avi, flv, mkv, mov, .mp4, wmf)
* Supporte les fichiers corrompus / tronqués
* Gère très bien Unicode (charset ISO-8859-XX, UTF-8, UTF-16), convertit les chaînes dans le charset de votre terminal
* Supprime les doublons (et si une chaîne est une partie d'une autre, conserve la chaîne la plus longue)
* Assigne une priorité aux informations qu'on peut alors filtrer avec l'option --level
* Dépend uniquement de hachoir-parser (et non pas de libmatroska, libmpeg2, libvorbis, etc.) et tourne sur tous les OS et toutes les architectures
Comparez les résultats avec d'autres outils :
(du plus généraliste au plus particulier)
* http://freevo.sourceforge.net/cgi-bin/freevo-2.0/Kaa (Kaa-metadata, qui contient le programme mminfo)
* https://gnunet.org/libextractor/ (paquet 'extract' sous Debian, le programme porte le même nom)
* http://mediainfo.sourceforge.net/fr (récement porté sous Linux)
* http://badcomputer.org/unix/code/wmainfo/
* ogginfo (programme et paquet Debian du même nom)
* mkvinfo (programme et paquet Debian du même nom)
* (liste non exhaustive, je ne les connais pas tous !)
Erreurs qui n'en sont pas :
L'erreur « Unable to parse file: (...) » indique qu'Hachoir n'a pas de parseur pour le format du fichier. L'erreur « Hachoir can't extract metadata, but is able to parse (...) » indique que je n'ai pas jugé intéressant d'écrire un extracteur de méta-donnée pour ce type de fichier :-) (mais que c'est possible si quelqu'un est motivé pour le faire car le format est reconnu). Certains parseurs peuvent également générer des avertissements (EXIF, ID3, Ogg/Vorbis) qui sont plus ou moins utiles, --quiet permet de les ignorer.
Plus d'informations :
http://hachoir.org/wiki/hachoir-metadata
# Faut bien quelqun pour la faire ... non ? bon ok ...
Posté par Oscar Blumberg . Évalué à 6.
Veillez a ne pas laisser traîner votre hachoir sur irc, plus particulièrement sur #linuxfr, l'auteur n'est en rien responsable des conséquences de ceci.
=> []
# bug?
Posté par wistiti68 . Évalué à 3.
[warn] Warning: padding /exif/content/ifd[0]/entry[0]/padding content don't look normal (invalid pattern at byte 0)!
mais à la fin c'est bon j'ai les info sur mon fichier.
[^] # Re: bug?
Posté par B16F4RV4RD1N . Évalué à 4.
[warn] MPEG audio: Unable to find synchronization bits
[warn] [Autofix] Fix parser error in /frames: stop parser, add padding
Metadata:
- Duration: 13.64 sec
- Channel: Stereo
- Sample rate: 22.1 KHz
- Bits/sample: 16 bits
- Bit rate: 40.0 Kbit/sec
- Format version: MPEG version 2 layer II
- MIME type: audio/mpeg
- Endian: Big endian
en comparaison la commande "file" me donne :
Blender3D, saved as 32-bits big endian with version 2.35
Sinon je sais que c'est très spécifique, mais est-ce que cela ne serait pas intéressant que hachoir puisse extraire les données de ce format :
http://en.wikipedia.org/wiki/Glulx
cela contient du texte, des données (pour une machine virtuelle), des images, du son..
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: bug?
Posté par feth . Évalué à 2.
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 4.
Haypo
[^] # Re: bug?
Posté par sn00py . Évalué à 1.
Si j'ai bien compris le but de hachoir, tu ne souhaites pas supporter plus de formats que le fait "file", mais avoir beaucoup plus de détails sur certains formats.
autant utiliser ce qui existe pour la première étape : détection du type de fichier.
[^] # Re: libmagic
Posté par Victor STINNER (site web personnel) . Évalué à 3.
Petit à petit j'ai recodé libmagic pour les types non reconnus. Sur sur une suggestion de Julien, les parseurs ont gagné une méthode validate() qui permet de vérifier la validité d'un format, et un dictionnaire "tags" qui contient des informations pour aider le choix du parseur (extension du nom du fichier, taille minimale, types MIME). Dans la grande majorité des cas, le fichier porte la bonne extension, et donc le choix du bon parseur est immédiat. Une petite optimisation serait d'ajouter la signature du fichier (les N premiers octets : "BMP", "PK", "BZ2", "PNG", etc.).
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 4.
Haypo
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 5.
Quand à ce format, bien sûr que Hachoir pourrait le lire, mais il faut le lui apprendre. J'ai reçu quand même pas mal de parseurs, ce qui me laisse penser qu'il est relativement simple d'en écrire un. Base toi sur un parseur existant ou mieux sur le parseur "template.py" (modèle) dans hachoir_parser/. L'API du noyau est ici :
http://hachoir.org/wiki/hachoir-core/API
Et la même mais plus complète et plus à jour :
http://hachoir.org/browser/hachoir-core/trunk/doc/hachoir-ap(...)
Il faut que je documente l'écriture d'un parseur. Si tu as les spécifications, c'est "facile" d'écrire un parseur.
Haypo
[^] # Re: bug?
Posté par B16F4RV4RD1N . Évalué à 2.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: bug?
Posté par feth . Évalué à 2.
D'ailleurs on peut ne pas voir cette information en sélectionnant un niveau d'information adéquat avec --level.
Peut-être le level par défaut devrait-il être de 1 ?
Pour ma part j'ai deux remarques :
*pourquoi le niveau est-il étalé de 1 à 9 ? Un niveau 0 n'affichant que des warnings ou les erreurs éventuelles ne serait-il pas pertinent ?
*Ceci est-il un bug ?
[^] # Re: bug?
Posté par feth . Évalué à 4.
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 4.
Il existe déjà l'option --quiet pour cacher les avertissements.
Ceci est-il un bug ?
Bien que je trouve ça joli d'écrire une chaîne à la verticale, j'ai quand même décidé d'écrire la chaîne à l'horizontale pour le bien être de notre cou. J'ai corrigé le bug avant la version 1335. C'est peut-être que tu as une autre version d'hachoir-metadata d'installée qq. part.
Haypo
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 3.
[^] # Re: bug?
Posté par JoeBar . Évalué à 4.
Quoi, c'est pas ça qui t'intéresse ? :)
[^] # Re: bug?
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Haypo
[^] # Re: bug?
Posté par wistiti68 . Évalué à 1.
Je précise que l'extention de mon jpeg est bien ".jpg"
Sinon j'ai essayé la proposition de modifier le level. Mais le niveau 1 ne me met que ces 8 messages d'erreur. À partir du niveau 3 je commence à avoir quelques info, et ce n'est qu'avec le niveau 9 que j'ai la totalité des informations.
Ça ne m'arrive qu'avec ce fichier en particulier. Si tu veux je peux te le mettre à disposition.
# Qualité de compression d'un JPEG
Posté par David Tschumperlé (site web personnel) . Évalué à 2.
Je ne sais pas si c'est facilement accessible, mais les traiteurs d'images te remercieraient grandement pour cette feature très utile.
[^] # Re: Qualité de compression d'un JPEG
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Dans le champ "sof" (start of frame 0), je vois precision=8, height=695, height=901, nb_components=3. On a donc le nombre de "dimensions" et la précision des couleurs. C'est bien ça dont tu parles ?
Utilise hachoir-urwid pour entrer plus en profondeur dans un fichier JPEG. Je peux te faire un tarball si tu veux.
Haypo
[^] # Re: Qualité de compression d'un JPEG
Posté par David Tschumperlé (site web personnel) . Évalué à 1.
de "qualité" qui indique grosso-modo le nombre de coefficients DCT qui sont gardés lors du codage des blocs de l'image. Ce paramètre doit apparaitre quelque part dans l'en-tête du fichier JPEG, à mon avis au même titre que les dimensions ou le nombre de bits par pixels. Mais c'est peut-être plus compliqué que ça à récupérer...
[^] # Re: Qualité de compression d'un JPEG
Posté par Victor STINNER (site web personnel) . Évalué à 4.
J'ai corrigé mon parseur de table de quantification ("dqt") qui ne semble plus bogué maintenant. J'ai repris l'algorithme en C et les tables utilisées pour le calcul et voilà que j'arrive au même résultat.
Je suis un peu bluffé que ça marche (qu'on arrive à retrouver le taux de compression au pourcent près) :-) Par contre, l'algorithme pour déterminer la qualité en pourcent est loin d'être trivial ! Fonction computeQuality() :
http://hachoir.org/browser/hachoir-metadata/trunk/hachoir_me(...)
# c'est grave ca ?
Posté par cho7 (site web personnel) . Évalué à 4.
[warn] [Autofix] Fix parser error in /: stop parser, add padding
Common:
- MIME type: application/zip
- Endian: Little endian
File "META-INF/MANIFEST.MF":
- File name: META-INF/MANIFEST.MF
- File size: 0 bytes
- Creation date: 2006-11-29 16:24:22
- Compression: Deflate
C'est un fichier ear, donc un zip en fait. D'où vient le "unknow (sic) ZIP header" ?
[^] # Re: c'est grave ca ?
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Mon email & co : http://www.haypocalc.com/wiki/Victor_Stinner
Haypo
# Nouveau snapshot
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Derniers changements :
* calcule la "qualité" des images JPEG
* supporteID3v1.1b (avant il ne supportait qu'ID3 v1.1)
* supprime les avertissements sur le padding dans le parseur EXIF
* corrige une faute de grammaire (content don't => content doesn't) :-)
* utilise stat() pour lire la taille des fichiers et attrape les erreurs sur la lecture de la taille du fichier
[^] # Re: Nouveau snapshot
Posté par Victor STINNER (site web personnel) . Évalué à 3.
[^] # Re: Nouveau snapshot
Posté par cho7 (site web personnel) . Évalué à 2.
Oui j'en avais discrètement signalé une également dans mon 1er post mais tu ne l'as pas relevé : mettre unknown ZIP header au lieu de unknow ZIP header
Voilou
[^] # Re: Nouveau snapshot
Posté par Victor STINNER (site web personnel) . Évalué à 2.
http://hachoir.org/changeset/1349
Mais quand on l'écrit tout seul, "unknow", faut-il également deux N ?
[^] # Re: Nouveau snapshot
Posté par Thomas Douillard . Évalué à 2.
Si c'est un verbe (oublier / ne pas connaitre) , ou un nom (un inconnu) il faut pas le n à la fin. Si c'est un adjectif ( inconnu toujours ), si.
[^] # Re: Nouveau snapshot
Posté par Thomas Douillard . Évalué à 2.
Rectification: si c'est un adjectif, unknow marche on dirait, pas si c'est un nom. Unknown marche si adejectif ou nom. Unknow à l'air d'être plus "brittish".
# Bug?
Posté par Khâpin (site web personnel) . Évalué à 2.
j'ai testé hachoir sur divers fichiers qui me passaient sous la main, et j'ai repéré quelques "bugs" (si tu veux les fichiers en question, tu n'as qu'à demander):
Sur un jpeg, le "manufacturer" donné par hachoir est différent de celui d'exif, et quelques info manquent:
Un truc bizarre (mais très facile à corriger je suppose): sur une autre image, l'extension était .JPG, et hachoir a essayé plusieurs parseurs avant de choisir EXIF, alors qu'avec la même image avec l'extension .jpg, il prend le bon parseur tout de suite.
Sur les images TIFF, tiffinfo me donne plus d'info que hachoir:
une autre:
Voilivoilou, j'espère que ça peut t'aider! Encore bravo et merci pour Hachoir.
[^] # Re: Bug?
Posté par Victor STINNER (site web personnel) . Évalué à 3.
Pour le format TIFF, je n'ai que peu de fichiers de test donc il est possible qu'il y ait encore des points à améliorer. Et tiens, je ne connaissait pas tiffinfo :-)
Merci de m'envoyer tes fichiers pour que je puisse corriger les bugs.
Victor
# Un problème sur le Wav ...
Posté par Loic Jaquemet . Évalué à 2.
cf ta boite à courriel
Traceback (most recent call last):
File "./hachoir-metadata", line 163, in ?
main()
File "./hachoir-metadata", line 156, in main
ok = processFiles(values, filenames)
File "./hachoir-metadata", line 114, in processFiles
ok &= processFile(values, filename, display_filename, priority, human, display)
File "./hachoir-metadata", line 76, in processFile
metadata = extractMetadata(parser)
File "./hachoir_metadata/metadata.py", line 319, in extractMetadata
metadata.extract(parser)
File "./hachoir_metadata/riff.py", line 54, in extract
wav.extract(riff)
File "./hachoir_metadata/riff.py", line 26, in extract
self.bit_rate = (wav["audio_data"].size * 1000) / self.duration[0]
ZeroDivisionError: long division or modulo by zero
[^] # Re: Un problème sur le Wav ...
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Haypo
# mkv multi audio
Posté par hokata . Évalué à 1.
J'ai observé un problème pour les fichiers contenant plus d'une piste audio.
Voilà ce que le programme me renvoie.
[err!] Key 'audio' already exists
[err!] Hachoir can't extract metadata, but is able to parse.
Et pour les vidéos, il serait intéressant d'obtenir le bitrate.
[^] # Re: mkv multi audio
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Pour le bitrate, j'ai aucune idée de comment l'obtenir.
[^] # Re: mkv multi audio
Posté par hokata . Évalué à 1.
Taille du fichier en kbit / Durée en seconde.
Hachoir fournie déjà la durée, la taille doit pouvoir être extraite du ls (avec les multiplications ou divisions qui vont bien).
Sinon j'ai continué de tester des fichiers vidéos.
J'ai rencontré un warn (fichier .avi, Xvid, MP3) :
[warn] Unable to convert string /info/comment/text to Unicode: 'ascii' codec can 't decode byte 0x89 in position 0: ordinal not in range(128)
Common:
- Duration: 23 min 49 sec
- Copyright: monazoroQYOrk004ti
- Comment: Has audio/video index (1.0 MB)
- Comment: fFDivX640 Q3 PV3cap D-CX
- MIME type: video/x-msvideo
- Endian: Little endian
Et il doit y avoir un problème avec le parseur du .mp4 qui me renvoie :
Metadata:
- Duration: 23 min 6 sec
- Creation date: 2006-10-02 05:30:43
- Last modification: 2006-10-02 05:30:43
- Comment: Play speed: 100.0%
- Comment: User volume: 100.0%
- MIME type: video/quicktime
- Endian: Big endian
[^] # Re: mkv multi audio
Posté par Victor STINNER (site web personnel) . Évalué à 3.
Hum, et si tu as un flux vidéo et un flux audio (voir 2, 3, 4 flux audios) ? Hum, ta formule est trop simpliste. Et si ne tiens pas compte des entêtes de chaque page Ogg. De plus, Hachoir ne sait pas lire la durée d'un .ogg :-) (j'ai ouvert un ticket pour ça)
J'ai rencontré un warn (fichier .avi, Xvid, MP3) :
[warn] Unable to convert string /info/comment/text to Unicode: 'ascii' codec can 't decode byte 0x89 in position 0: ordinal not in range(128)
Common:
(...)
- Comment: ‰f‘½FDivX640 Q3 PV3cap D-CX
Ouais, il semble pas très catholique ton commentaire. Tu peux m'envoyer la vidéo si elle est pas trop grosse (5 Mo max) ? Si elle est trop grosse, tronque là (dd if=fichier.avi of=fichier_tronque.avi bs=1024 count=1024) et regarde si tu as encore le bug. Si oui, envoie moi ce fichier tronqué. Si non, euh... Contacte moi :)
Et il doit y avoir un problème avec le parseur du .mp4 qui me renvoie :
Metadata:
- Duration: 23 min 6 sec
(...)
C'est tout ce qu'il sait lire pour l'instant. Si t'es chaud pour améliorer le parseur MPEG-4, n'hésite pas :-) Si ta question concernait "MIME type: video/quicktime", sache que le format Quicktime est le format MPEG-4 (ou l'inverse, je sais pas).
Victor
# sous titres dans un mkv?
Posté par briaeros007 . Évalué à 2.
pv moi si tu veux les fichiers que j'ai utilisé ou plus d'info ;)
Sinon pour les exifs, on a pas toutes les données que l'on peut avoir avec exiftool , (et largement moins qu'avec exiftool dans les fichiers CR2 (raw de canon)) (comme la focale utilisée, l'ouverture, la vitesse, si le flash est mis ou pas etc...)
Sinon pas vraiment de bugs trouvé.
beau boulot ;)
[^] # Re: sous titres dans un mkv?
Posté par briaeros007 . Évalué à 2.
A la place de mv faut lire mkv !!!
Je savais qu'il fallait pas surfer quand son dd nous lache on fait des conneries (comment ca il est toujours pas changé ?)
[^] # Re: sous titres dans un mkv?
Posté par Victor STINNER (site web personnel) . Évalué à 2.
J'ai ajouté la norme ISO 639-2 à Hachoir pour donne le nom complet de la langue (fre => French).
Je sais pas s'il te faut d'autres info. Si oui, dit moi où les trouver :-)
--
Pour EXIF, il faudrait recoder le parseur pour qu'il bug moins, et réorganiser l'extracteur de méta-données pour qu'il sépare les infos sur la photo et sur l'appareil photo (faut pas tout mélanger).
Pour le format "Canon", ben envoie moi les spec' ou code le parseur. J'y peux rien moi si chaque constructeur invente son format maison :-(
[^] # Re: sous titres dans un mkv?
Posté par briaeros007 . Évalué à 2.
Pour le CR2 il semblerait que ce soit un tiff un peu modifié
( http://www.cybercom.net/~dcoffin/dcraw/ -> Do you have any specifications describing raw photo formats? )
et pour les données exif (y compris une partie des données spécifique des constructeurs) il y avait pas mal de truc sur la page de exiftool :
par exemple
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.h(...)
( ou http://www.sno.phy.queensu.ca/~phil/exiftool/ -> Additional Documentation and Resources )
pour les sous titres, ca m'a l'air parfait ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.