Titre de la chanson en streaming icecast actuelle

J’ai lu une question, mais aucune ne m’a résolu. J’ai fait un client simple pour lire soundstream par le serveur icecast2. je lis le son avec:

a = new WMPLib.WindowsMediaPlayer(); a.URL = "http://radiolink:8000/music"; a.controls.play(); 

ça marche et j’écoute de la musique. Maintenant, je veux lire le titre de la chanson en cours. J’ai trouvé ici je dois créer une demande comme:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://radiolink:8000/music"); request.Headers.Clear(); request.Headers.Add("GET", " HTTP/1.0"); request.UserAgent = "WinampMPEG/5.09"; request.Headers.Add("Icy-MetaData", "1"); request.KeepAlive = true; WebResponse fifo = request.GetResponse(); Console.WriteLine(fifo.Headers); 

Avec cette console de code, seule la sortie est écrite ( content-type=audio-mpg ). Peut m’aider et me mettre dans la bonne façon de lire les données correctement?

// première partie résolue. maintenant je recive thath:

ice-br: 128,128 ice-audio-info: ice-samplerate = 44100; ice-bitrate = 128; ice-channels = 2 glacé-description: radio fff glacé-genre: Divers glacé-nom: RADIO glacé-pub: 0 ​​glacé -url: http://url.com icy-metaint: 16000 Contrôle de cache: no-cache Content-Type: audio / mpeg

Comment lire d’autres métadonnées?

Les métadonnées des stream SHOUTcast / Icecast ne se trouvent pas dans les en-têtes, mais dans le stream lui-même.

Cet en icy-metaint: 16000 vous avez est la clé. Tous les 16 000 octets, vous obtiendrez un bloc de métadonnées. Le premier octet de ce bloc indique la longueur des métadonnées. Multipliez sa valeur par 16 pour obtenir la longueur en octets. Une fois que vous faites cela, vous obtiendrez quelque chose comme ceci:

 StreamTitle='Awesome Trance Mix - DI.fm';StreamUrl='' 

Il sera complété à la fin par des octets nuls jusqu’à ce que vous atteigniez la longueur du bloc.

J’ai répondu à la même question ici pour PHP, mais le concept est le même, peu importe la langue: Extraire les informations de piste d’un stream audio en utilisant PHP