# ID3v2 MP3 Tag auslesen



## KlemensyXYZ (31. Mai 2011)

Moin,

ich habe in einem Programm MP3 ID3v1 Tags ausgelesen.
und zwar so:


```
package id3tag_lesen;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;

public class MP3Auslesen 
{
	public static void main (String [] args)
	{
		Scanner in = new Scanner(System.in);
		FileInputStream fis = null;
		long groesseMB3 = 0;
		byte bTAG [] = new byte [3];
		byte bTitel [] = new byte [30];
		byte bInterpret [] = new byte [30];
		byte bCDTitel [] = new byte [30];
		byte bJahr [] = new byte [4];
		byte bKommentar [] = new byte [30];
		byte bGenre = 0;
		String filename = null;
		try
		{
			System.out.println("MP3-Datei: ");
			filename = in.nextLine();
			fis = new FileInputStream(filename);
			groesseMB3 = fis.available();
			//Datensatzzeiger positionieren
			fis.skip(groesseMB3-128);
			fis.read(bTAG); //TAG lesen
			String strTAG = new String(bTAG);
			fis.read(bTitel); //Titel lesen
			String strTitel = new String(bTitel);
			fis.read(bInterpret);//Interpret lesen
			String strInterpret = new String(bInterpret);
			fis.read(bCDTitel);//CDTietel lesen
			String strCDTitel = new String(bCDTitel);
			fis.read(bJahr);//Jahr lesen
			String strJahr = new String(bJahr);
			fis.read(bKommentar);//Kommentar lesen
			String strKommentar = new String(bKommentar);
			bGenre = (byte)fis.read();//Genre lesen
			System.out.println("Dateigroesse: " + groesseMB3);
			System.out.println("Tag: " + strTAG);
			System.out.println("Titel: " + strTitel);
			System.out.println("Interpret: " + strInterpret);
			System.out.println("CD-Titel: " + strCDTitel);
			System.out.println("Jahr: " + strJahr);
			System.out.println("Kommentar: " + strKommentar);
			System.out.println("Genre: " + bGenre);
			fis.close();
		}
		catch (IOException err)
		{
			System.out.println("Fehler: " + err);
		}
	}
}
```
nun habe ich das Problem dass der TAG meiner MP3 Datei in ID3v2 ist.
Der Titel der MP3 Datei lautet: 
	
	
	
	





```
Cantina Band (Episode 4, A New Hope)
```
.
Das is leider zu lang für ID3v1 sodass nur 
	
	
	
	





```
Cantina Band (Episode 4, A New
```
 ausgegeben wird.
Mit einem Programm dass ID3v2 TAGs ausliest habe ich herausbekommen dass der Titel in ID3v2 vollständig ist.

Wie kann ich das nun in so einem Programm wie oben einbauen?
Ich hab nirgendwo herausgefunden wie die Längen der Bytes dort sind.

Außerdem werden für Leerzeichen Kästen ausgegeben.
Was muss ich da anders machen?

Danke


----------



## faetzminator (31. Mai 2011)

Suchst du eine Doku? id3v2.4.0-structure - ID3.org


----------



## KlemensyXYZ (31. Mai 2011)

naja eigentlich eher so eine Angabe wie aus meiem Leerbuch:

TAG: Länge 3 Bytes
Titel: Länge 30 Bytes
Interpret: Länge 30 Bytes
usw.

nur das mein Buch veraltet ist und die Angaben nur für ID3v1 hat.
Und diese Doku hatte ich auch schon gefunden nur sagt die mir irgendwie nix über mein Problem.


----------



## faetzminator (31. Mai 2011)

Ja, auslesen von ID3v1 Tags ist wohl auch wesentlich einfacher als das von ID3v2 Tags. Aber diese Doku beschreibt das ganze Protokoll, man muss dieses Dokument _nur_ lesen und verstehen.


----------



## KlemensyXYZ (31. Mai 2011)

faetzminator hat gesagt.:


> man muss dieses Dokument _nur_ lesen und verstehen.



mit besonderer Betonung auf _nur_:rtfm:

gibts da auch ne Kurzfassung?
ich hab das grade mal angefangen und verstehe nur :bahnhof:


----------

