Oppure

Loading
24/03/09 20:14
Luk3
In C#, come potrei fare a leggere i tag id3?
aaa
24/03/09 20:46
andrea.b89
Mah, di solito i tag ID3 nei file mp3 sono inseriti negli ultimi 128 byte del file.
Quindi il consiglio è di posizionarti alla fine del file.
"Tornare" indietro di 128 byte, e poi leggere fino alla fine del file.
Poi ovviamente trasformi questi 128 byte in stringa e dopo la sconponi.
Magari se non sai esattamente come essa è composta per prima cosa la stampi e poi ti studi un modo per spezzarla nelle varie componenti.

Spero di essere stato chiaro e di aiuto:k:
aaa
24/03/09 21:19
Luk3
Postato originariamente da andrea.b89:

Mah, di solito i tag ID3 nei file mp3 sono inseriti negli ultimi 128 byte del file.
Quindi il consiglio è di posizionarti alla fine del file.
"Tornare" indietro di 128 byte, e poi leggere fino alla fine del file.
Poi ovviamente trasformi questi 128 byte in stringa e dopo la sconponi.
Magari se non sai esattamente come essa è composta per prima cosa la stampi e poi ti studi un modo per spezzarla nelle varie componenti.

Spero di essere stato chiaro e di aiuto:k:


Ok, ci sono.. ma come faccio a leggere gli ultimi 128 byte del file? :-|
aaa
24/03/09 22:00
andrea.b89
Ovviamente devi sapere come si leggono in file in generale.

In questo caso specifico devi fare

FileStream fs = new FileStream(percorso, FileMode.Open); //

byte[] buf = new byte[128]; //buffer di lettura

fs.Seek(-128, SeekOrigin.End); //ti posizioni alla fine del file - 128 byte

fs.Read(buf,0, 128); //leggi 128 byte che vengono salvati sul vettore di byte chiamato buf

fs.Close();


Percorso è solo indicativo, spetterà a te inerire il path corretto

A questo punto dovrai codificare il vettore di byte in stringa e poi spezzarla ;)

Spero di essere stato chiaro e di aiuto :k:
Ultima modifica effettuata da andrea.b89 24/03/09 22:01
aaa
25/03/09 12:47
Luk3
Ok, ci siamo quasi :D
Quando converto "buf" in stringa, la stringa contiene "System.Byte[]".
Mi era già successo.. ma non ricordo come si risolve :doubt:
aaa
25/03/09 14:00
andrea.b89
Probabilmente perchè hai usato il metodo ToString().
Ciò che devi fare è codificare il vettore di byte, non convertirlo come avviene con la chiamata a ToString().

Per la codifica fai così :

// Codifichi l'array di byte in stringa      
Encoding  enc = new ASCIIEncoding();
string id3TagStr= enc.GetString(buf);


Spero di esserti stato di aiuto
Ultima modifica effettuata da andrea.b89 25/03/09 15:01
aaa
25/03/09 16:01
Luk3
Grazie =P
Però se faccio visualizzare il contenuto, mi visualizza "TAG" o solo il titolo.. why?
aaa
26/03/09 16:35
andrea.b89
posta il codice che usi.
A me funziona bene, magari hai fatto qualche errore.:k:
aaa