Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Tag ID3
Forum - C# / VB.NET - Tag ID3

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 21:14
Martedì, 24/03/2009
In C#, come potrei fare a leggere i tag id3?

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 21:46
Martedì, 24/03/2009
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:

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 22:19
Martedì, 24/03/2009
Testo quotato

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? :-|

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 23:00
Martedì, 24/03/2009
Ovviamente devi sapere come si leggono in file in generale.

In questo caso specifico devi fare

Codice sorgente - presumibilmente C#

  1. FileStream fs = new FileStream(percorso, FileMode.Open); //
  2.  
  3. byte[] buf = new byte[128]; //buffer di lettura
  4.  
  5. fs.Seek(-128, SeekOrigin.End); //ti posizioni alla fine del file - 128 byte
  6.  
  7. fs.Read(buf,0, 128); //leggi 128 byte che vengono salvati sul vettore di byte chiamato buf
  8.  
  9. 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 il 24/03/2009 alle 23:01
PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 13:47
Mercoledì, 25/03/2009
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:

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 15:00
Mercoledì, 25/03/2009
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ì :

Codice sorgente - presumibilmente C#

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



Spero di esserti stato di aiuto

Ultima modifica effettuata da andrea.b89 il 25/03/2009 alle 16:01
PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 17:01
Mercoledì, 25/03/2009
Grazie =P
Però se faccio visualizzare il contenuto, mi visualizza "TAG" o solo il titolo.. why?

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 17:35
Giovedì, 26/03/2009
posta il codice che usi.
A me funziona bene, magari hai fatto qualche errore.:k:

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 17:46
Giovedì, 26/03/2009
Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             OpenFileDialog open = new OpenFileDialog();
  4.             open.Filter = "File Musica MP3|*.mp3";
  5.             if (open.ShowDialog() == DialogResult.OK)
  6.             {
  7.                 textBox1.Text = open.FileName;
  8.                 FileStream fs = new FileStream(textBox1.Text.ToString(), FileMode.Open);
  9.                 byte[] buf = new byte[128];
  10.                 fs.Seek(-128, SeekOrigin.End);
  11.                 fs.Read(buf, 0, 128);
  12.                 Encoding enc = new ASCIIEncoding();
  13.                 string info = enc.GetString(buf);
  14.                 fs.Close();
  15.                 textBox2.Text = info;
  16.             }
  17.         }


Ultima modifica effettuata da Luk3 il 26/03/2009 alle 17:47
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo