Question

Je suis en train d'écrire un programme pour diff et copier des fichiers entiers ou des segments en fonction des changements à chaque extrémité (Rsync-esque ... mais plus comme Unison). L'idée principale est de garder mon dossier de musique (tous les mp3s) à jour sur plusieurs sites.

Je voudrais envoyer des mises à jour segmentés si seulement de petites portions du fichier ont changé, par opposition à la copie du fichier entier. Pour cela, je besoin d'un moyen de diff segments du fichier.

J'ai d'abord essayé de générer hash pour des blocs de chaque fichier (tous les n octets de hachage je serais le segment). J'ai remarqué que lorsque je l'ai changé un attribut (tag ID3v2 sur un mp3) tous les blocs hachurées changeraient. Cela est logique, comme je suppose que l'en-tête est de plus en plus avec l'acquisition de nouvelles informations.

Cela me conduit à ma question réelle. Je voudrais savoir comment déterminer la longueur de l'en-tête d'un mp3, pour que je puisse créer 2 hash comparables.

1) La méta information du fichier (en-tête)

2) Le flux mpeg réel avec audio (Ce hachage devrait rester inchangé si tout ce que je fais est alter info tag)

Suis-je manque quelque chose d'autre?

Merci!

Ty

Était-ce utile?

La solution 3

Je me suis retrouvé à l'aide TagLibSharp. developer.novell.com/wiki/index.php/TagLib_Sharp

Autres conseils

Si vous voulez déterminer les informations d'en-tête, vous aurez soit:

  • a) besoin d'utiliser une bibliothèque mp3 qui peut faire l'analyse syntaxique pour vous, ou
  • b) aller à la mp3 et l'analyser comme nécessaire.

Si tout ce que vous voulez vérifier la longueur est ID3v2, vous trouverez des informations sur sa structure à http://www.id3.org/id3v2.4.0-structure .

Si vous lisez les 3 premiers octets, et ils sont égaux à « ID3 », puis passer au 7ème octet, alors lisez la taille d'en-tête. Attention cependant, car la taille est stockée sous la forme d'un « entier synchsafe ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top