Pregunta

Yo escribo un programa para diferenciar, y copia de archivos completos o segmentos en base a cambios en cualquier extremo (Rsync-esque ... sino más bien como Unison). La idea principal es mantener mi carpeta de música (todos los mp3) al día durante varias ubicaciones.

Me gustaría enviar actualizaciones segmentados si sólo pequeñas partes del archivo han cambiado, en lugar de copiar el archivo completo. Para esto, necesito una manera de segmentos diff del archivo.

Al principio me trató hashes de generación de bloques de cada archivo (cada n bytes Me hash del segmento). Me di cuenta de que cuando he cambiado un atributo (etiqueta ID3v2 en un mp3) todos los bloques hash cambiarían. Esto tiene sentido, ya que me imagino la cabecera está creciendo a medida que adquiere nueva información.

Esto me lleva a mi pregunta real. Me gustaría saber cómo determinar la longitud de la cabecera de un mp3, por lo que podría crear 2 hashes comparables.

1) La información de metadatos del archivo (cabecera)

2) El flujo MPEG real con audio (Este hash debe permanecer sin cambios si todo lo que hago es información de la etiqueta alter)

Me estoy perdiendo algo más?

Gracias!

Ty

¿Fue útil?

Solución 3

terminé usando TagLibSharp. developer.novell.com/wiki/index.php/TagLib_Sharp

Otros consejos

Si desea determinar la información del encabezado, ya sea que usted:

  • a) necesidad de utilizar una biblioteca de mp3 que puede hacer el análisis para usted, o
  • b) vaya a la mp3 especificación y analizarlo a cabo según sea necesario.

Si todo lo que desea comprobar la longitud de las etiquetas es id3v2, entonces usted puede averiguar información sobre su estructura en http://www.id3.org/id3v2.4.0-structure .

Si usted lee los primeros 3 bytes, y son igual a "ID3", a continuación, pasar a la séptima bytes, a continuación, leer el tamaño de la cabecera. Tenga cuidado sin embargo, debido a que el tamaño se almacena como un "número entero synchsafe".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top