Bonjour,
Je désire implémenter une méthode en C qui prend en argument un fichier de type MP3 ou OGG et qui :
- renvoie les informations contenues dans une DB si le fichier est déjà présent
- ajoute le fichier dans la DB avec des valeurs par défaut si il n'est pas déjà présent (et renvoie donc ces valeurs par défaut)
Mon problème est donc d'identifier à coup sur un fichier, mais en le reconnaissant même si il a changé de nom, de tag.
Les solutions que je vois :
- Le nombre de bits du fichier. Mais la probabilité d'avoir deux fichiers du même nombre de bits me semble un peu élevée.
- MD5SUM. Mais n'est pas un peu lourd ? (j'aimerais que l'opération puisse être réalisée de manière très transparente et légère).
Quelle est la probabilité d'une collision ? comment utiliser cette fonction en C ?
- SHA1SUM. idem que MD5SUM.
-autre chose ?
Merci pour les infos et les conseils.
# A propos de md5/sha1
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[^] # Re: A propos de md5/sha1
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
Je vais voir si Gstreamer permet facilement d'extraire la zone de données.
Je penche pour la solution suivante :
- identification du fichier suivant son nom complet (full path)
si pas trouvé, c'est que soit :
- c'est un nouveau fichier
- le fichier a été renommé
- le fichier a été déplacé
Là, je calcule un md5/sha1, ça réduit considérablement la charge (on déplace ou renomme rarement un fichier)
Sinon, je précise que je prend le full path car I_love_you_baby.mp3 a de très fortes chances de collisions (vous voyez le genre)
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: A propos de md5/sha1
Posté par Krunch (site web personnel) . Évalué à 4.
SHA1 est plus lent que MD5 mais les risques de collisions sont aussi moindres. Il y a aussi peut-être d'autres fonctions de hashage plus rapides (mais avec des risques de collision plus élevés) qui peuvent convenir (MD4 par exemple).
http://planeta.terra.com.br/informatica/paulobarreto/hflounge.html(...) (une liste de fonctions de hashage cryptographiques trouvée sur Wikipedia)
http://madchat.org/crypto/md5-vs-sha.txt(...)
Il y avait aussi un article dans un Linux Mag France qui décrivait un programme de recherche de fichiers en double qui pourrait t'intéresser (le programme est disponible sur internet je pense, j'essairai de le retrouver demain si personne a trouvé d'ici là). Je crois qu'il utilisait notamment la taille des fichiers et un arbre de recherche binaire.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: A propos de md5/sha1
Posté par daggett . Évalué à 1.
[^] # Re: A propos de md5/sha1
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: A propos de md5/sha1
Posté par gnujsa . Évalué à 2.
http://packages.debian.org/testing/utils/fdupes(...)
et le code source est là:
http://netdial.caribe.net/~adrian2/fdupes.html(...)
sympatique comme tout ce programme.
[^] # Re: A propos de md5/sha1
Posté par gnujsa . Évalué à 2.
à titre indicatif sur un fichier de 20 Mo avec les outils GNU : sha1sum(160 bits), md5sum(128bits), cksum(CRC32bits) et sum(16bits)
sha1sum: 0m1.250s
md5sum: 0m1.152s
cksum: 0m0.315s
sum: 0m0.361s
Par contre niveau risque de collision ...
Je pense aussi à 2 autres trucs:
- il y a un plugin gstreamer: md5sink. je sais mais peut être que tu peux récupérer avec que le md5 des données audio brut (problème de tags évoqué plus haut)
- dans les specs « Thumbnail Managing Standard » de freedesktop, les vignettes portent le nom du hash MD5 de l'URI de l'image original. Même si le hash md5 d'un chemin doit se calculer trés rapidement, je sais pas trop si ça te sera utile ...
# md5
Posté par Troy McClure (site web personnel) . Évalué à 4.
http://cvs.gnome.org/viewcvs/drivel/src/(...) (regarde md5.*)
# Les entêtes ogg
Posté par Jacques L. . Évalué à 3.
Exemple :
[^] # Re: Les entêtes ogg
Posté par Jacques L. . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.