Come è possibile determinare la lunghezza del colpo di testa di un file mp3?

StackOverflow https://stackoverflow.com/questions/2180521

  •  24-09-2019
  •  | 
  •  

Domanda

Sto scrivendo un programma per diff, e copiare file interi o di segmenti in base alle modifiche su entrambe le estremità (Rsync-esque ... ma più come Unison). L'idea principale è quella di mantenere la mia cartella di musica (tutti gli mp3) aggiornati su più sedi.

Mi piacerebbe inviare gli aggiornamenti segmentate se solo piccole parti del file sono cambiati, al contrario di copiare l'intero file. Per questo, ho bisogno di un modo per segmenti diff del file.

ho inizialmente provato hash di generazione per i blocchi di ogni file (Ogni n byte avrei hash del segmento). Ho notato che quando ho cambiato un attributo (tag ID3v2 su un mp3) tutti i blocchi hash cambierebbero. Questo ha senso, come direi l'intestazione è in crescita, come ha acquisito nuove informazioni.

Questo mi porta a mia domanda effettiva. Mi piacerebbe sapere come determinare la lunghezza del colpo di testa di un mp3, in modo da poter creare 2 hash comparabili.

1) La meta informazioni del file (intestazione)

2) Il flusso attuale mpeg con audio (Questo hash dovrebbe restare invariato se non faccio altro che l'alter informazioni tag)

Mi manca qualcos'altro?

Grazie!

Ty

È stato utile?

Soluzione 3

Finii con TagLibSharp. developer.novell.com/wiki/index.php/TagLib_Sharp

Altri suggerimenti

Se si desidera determinare le informazioni di intestazione, potrete sia:

  • a) necessità di utilizzare una libreria di mp3 che può fare il parsing per voi, o
  • b) andare alla mp3 specifiche e analizzare fuori, se necessario.

Se tutto si desidera controllare la lunghezza di è ID3v2, allora si possono trovare informazioni sulla sua struttura a http://www.id3.org/id3v2.4.0-structure .

Se si leggono i primi 3 byte, e sono uguali a "ID3", quindi passare al 7 byte, quindi leggere la dimensione di intestazione. Fate attenzione però, perché la dimensione è memorizzato come un "integer synchsafe".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top