7
votes

Comment créer une checksum stable d'un fichier multimédia?

Comment puis-je créer une somme de contrôle de données multimédia sans les métadonnées pour obtenir une identification stable pour un fichier multimédia. De préférence une approche multiplate-forme transversale avec une bibliothèque qui prend en charge de nombreux formats. par exemple. VLC, FFMPEG ou MPLIPER.

(Les fichiers multimédia doivent être audio et vidéo dans des formats courants, les images seraient bien d'avoir aussi)


3 commentaires

Je pense que vous recherchez un algorithme d'empreintes digitales ... ce qui serait intéressant comme il peut être utilisé pour identifier également des médias similaires. Dans l'attente de réponses, cogning. +1


L'empreinte digitale est également intéressante, il y a par exemple Libofa [1] pour l'audio (que je ne pouvais pas compiler sur OSX malgré les correctifs), mais je veux quelque chose de plus générique pour identifier des fichiers en double et non des chansons / films en double. [1] code.google.com/p/music-libofa


Par "Sans les tags", tu veux dire "sans les métadonnées"? Si oui, disant «Data Media» peut confondre des choses.


3 Réponses :


0
votes

Une solution possible que j'ai trouvée semble être avec VLC:

./VLC -I rc snd.mp3 :sout='#std{mux=raw,access=file,dst=-}' vlc://quit | sha1sum


1 commentaires

semble ne pas fonctionner pour les films, semble pas être indépendant de la plate-forme



3
votes

Je ne connais aucun logiciel indépendant de la plate-forme existant qui l'accomplira, mais je sais que cela pourrait être accompli dans une langue interprétée (indépendante de la plate-forme) telle que Java.

Essentiellement, nous devons simplement dépouiller des métadonnées (balises) à partir du fichier, à l'avance des fichiers vidéo de démultiplexage. Théoriquement après Demux et retirer des métadonnées, on pourrait avoir le fichier et comparer contre un autre fichier qui a subi le même processus pour correspondre aux fichiers identiques malgré des étiquettes différentes. Contrairement à une empreinte digitale, cela ne permettrait pas d'identifier des chansons / films similaires, mais des fichiers identiques (imaginez que vous souhaitiez peut-être les 10 versions ou les débites différentes d'une chanson donnée que vous avez archivée, mais ne voulez pas 2 copies identiques de l'un d'entre eux flottant) .

La partie la plus troublante de ceci est la suppression des étiquettes car il existe de nombreuses spécifications différentes pour les formats de balises qui ne sont pas nécessairement implémentés les mêmes sur différentes applications, c'est-à-dire le même fichier audio exact donné que des balises identiques séparément à travers deux applications différentes peuvent ne pas entraîner fichiers de sortie identiques. Le seul moyen de poser un problème mortel sur le concept d'une somme de contrôle audio uniquement est si un logiciel de marquage populaire apporte des modifications apportées à la partie audio binaire du fichier ou à des pads l'audio d'une manière non standard.

Prendre une somme de contrôle est trivial, mais je ne suis pas conscient du haut de ma tête de la plate-forme des bibliothèques indépendantes de Demux et de Demux MPEG. Je sais que dans les environnements Nix, MPGTX est un excellent outil de ligne de commande qui pourrait effectuer la Demux et se détacher, mais évidemment, ce n'est pas une solution indépendante de la plate-forme.

Peut-être que quelqu'un sort est ambitieux?


1 commentaires

C'est la voie à suivre. En attendant, j'ai écrit Ha patch pour FFMPEG pour calculer les hachages SHA1 au lieu de la somme de contrôle Adler32. Cela fait essentiellement l'affaire. Si quelqu'un aimerait m'aider à apporter cela à FFMPEG, ce serait génial.



1
votes

Eh bien, il peut être 11 ans trop tard pour une réponse, mais dans le cas où d'autres m'aiment trébucher sur cette ...

FFMPEG peut produire des checksums pour des flux individuels. Donc, le même audio ou la même vidéo produirait la même somme de contrôle de son format de conteneur ou des métadonnées de son conteneur.

Exemple de la piste vidéo du fichier $ flyename , écrire la sortie sur $ FileName.md5 : xxx

pour audio, utilisez -map 0: A .

à la sortie à stdout, utilisez - . Par exemple: xxx


0 commentaires