# Icecast / SHOUTcast MP3 Stream / icy-metaint



## Atze (7. Feb 2010)

moin
ich bin hier schon am verzeifeln, vielleicht weiß einer von euch weiter
hat jemand mit dem lesen von mp3 metainformationen aus nem icecast stream? ich frickel hier schon stunden rum, aber bekomm nie was brauchbares raus.

ich orientiere mich an folgender anleitung

- = [ AMPLE - An MP3 LEnder ] = -


```
public static void getDamnMetaInf() throws IOException {

		final String url = "http://ws.stream.radio11.co.uk:8000/1";
		InputStream stream = new URL(url).openStream();

		int metaInt = 16000; // vorher aus dem header mit icy-metaint ermittelt

		byte[] soundBuffer = new byte[1];
		byte[] metaInfBlockLength = new byte[1];

		while (true) {

			int mp3Bytes = 0;
			while (mp3Bytes < metaInt) {
				mp3Bytes += stream.read(soundBuffer);
			}
			System.out.println("Read " + mp3Bytes + " bytes data"); // sollten 16000 sein
			int readLength = stream.read(metaInfBlockLength);
			System.out.println("Read " + readLength + " bytes metalength"); // sollte 1 sein
			int metaBytes = signedByteToInt(metaInfBlockLength[0]) * 16; // wert des header-längen-bytes mal 16
			System.out.println("Awaiting " + readLength + " bytes of metainf");
			// wenn meta vorhanden ist
			if (metaBytes > 0) {
				byte[] metaBuffer = new byte[metaBytes];
				int readMetaInf = stream.read(metaBuffer);
				System.out.println("Read " + readMetaInf + " bytes meta");
				String header = new String(metaBuffer);
				System.out.println("Header: " + header);
			}
		}
	}

	public static int signedByteToInt(byte value) {
		return (value & 0x7F) + (value < 0 ? 128 : 0);
	}
```

das ist kein code für den lifebetrieb, ist zum test runtergebrochen, aber der theorie nach müsste es doch klappen, oder?
der metaint wert ist definitiv 16000, das bekomme ich aus dem header. also warum bekommt man nach diesem schema nichts brauchbares raus?? jemand ne idee?? ist das auslesen des längenbytes für die metainf richtig? oder die konvertierung von byte in den string?

*edit*
oh, wohl falsches thema, kann ja dann bitte verschoben werden


----------



## Atze (7. Feb 2010)

könnte den hier mal bitte jemand in die multimedia-ecke verschieben, oder wo immer er vielleicht öfter gelesen wird?  danke

und ich habs jetzt mal mit nem winamp probiert, metainformationen sind auf jeden fall da, also winamp zeigt sie an. warum bekomm ich denn nur sch*** raus? sieht jemand den fehler?


----------



## Atze (8. Feb 2010)

hat sich erledigt, hab vergessen den http-header zu skippen, dann kommt er wohl mit dem zählen durcheinander


----------



## markus3650 (22. Nov 2010)

Hi,

kannst du bitte den fertigen Code hier nochmal posten? Sitze vor nem ähnlichen problem...

Grüße,
Markus


----------

