2010-09-10 3 views
1

Je cherche à (en NodeJS):Icecast métadonnées dans Artefacts Extracting Produit de sortie des données audio

  1. Connectez-vous à un flux audio internet Icecast. Ex: http://icecast3.977music.com/comedy
  2. Analyser les en-têtes de réponse et extraire la valeur icy-metaint.
  3. Écrivez les données audio brutes dans un fichier, en extraire les octets de métadonnées du flux audio afin de:
    • Intercept et l'analyse des métadonnées quand il arrive.
    • N'incluez pas les octets de métadonnées dans le fichier de sortie, afin qu'il n'y ait aucun artefact audio à cause des métadonnées injectées.

Après la page "unofficial" Shoutcast Metadata Protocol de SmackFu, j'ai pu en arriver là:

https://gist.github.com/e7474421dcb25e011620

Fondamentalement, je suis en mesure d'extraire les métadonnées quand il est prévu (il y a seulement 1 événement de métadonnées au tout début du vidage de flux inclus dans gist). Cette partie semble fonctionner correctement.

Le problème est que le fichier MP3 de sortie a des artefacts audio visibles dans tout le fichier, vraisemblablement lorsque les octets de métadonnées arrivent. Cependant, je suis en train d'extraire ces octets de métadonnées et de ne pas les inclure dans le fichier de sortie, donc c'est la partie la plus étrange.

Le document de protocole dans le lien ci-dessus ne dit rien d'autre doit être fait pour le fichier de sortie, mais évidemment, je suis toujours en train de faire quelque chose de mal. Est-ce que quelqu'un sait quoi d'autre doit être fait pour le flux audio? Merci d'avance!

Répondre

1

J'ai été capable de trier cela sur le canal IRC Node.js. J'ai eu une erreur "off by 1" dans la quantité d'octets audio en cours de production, donc et a abouti à un fichier audio invalide.

Le gist affiché dans l'OP a été corrigé et fonctionne maintenant correctement.

Une continuation de ce petit exercice est en train d'être empaquetée dans un module Node.JS pour lire l'audio et les métadonnées à partir d'un flux SHOUTcast/Icecast. Découvrez node-radio-stream si vous êtes intéressé.

Questions connexes