2012-09-22 246 views
19

Actualmente estoy usando child_process y la línea de comandos mplayer para reproducir audio en la máquina local, con mi aplicación Node.JS. Esto funciona, pero no es realmente una solución excelente. Mi mayor problema es que se tardan 500ms desde que mplayer se inicie para que el audio comience a reproducirse.Reproducir audio con Node.JS

¿Hay mejores formas de reproducir audio? Preferentemente audio comprimido, pero tomaré lo que pueda obtener.

+0

@lanzz Sí, aunque lo hubiera hecho, puede ser que necesite para volver a comprobar que – Znarkus

+0

Cuál es la aplicación para esto? ¿Necesita audio realmente de baja latencia a través de Internet? – Brad

Respuesta

7

Creo que lo que pregunta es si hay algún buen módulo que funcione con audio en el ecosistema del nodojs.

Cuando tenga este tipo de pregunta, primero debe ir al npmjs y simplemente escribir una palabra clave adecuada.

Aquí hay una lista de módulos relacionados con audio que encontré en el sitio npmjs.

baudio de las subcasillas se ve bien para mí.

+0

No era lo suficientemente claro como para reproducir archivos * de audio *. Lo siento por eso. Gracias por el enlace, * komponist */* mpd * era en realidad algo que podía usar. Pero voy a mantenerlo simple para este proyecto y probar suerte con 'mplayer -slave'. – Znarkus

+1

baudio definitivamente * no * lo que usted quiere para reproducir archivos de audio – BonsaiOak

25

Sugeriría utilizar node-speaker, que genera datos PCM en bruto a sus altavoces (por lo tanto, básicamente reproduce audio).

Si está reproduciendo algo así como archivos mp3, es posible que necesite decodificarlo primero en datos PCM, que es exactamente lo que node-lame hace.

Espero que ayude.

+0

Además, aquí hay un ejemplo: https://gist.github.com/TooTallNate/3947591 – alessioalex

+3

necesita algo que no requiere Python ... – daniellmb

+1

Encontró cualquier cosa que no requiera Python? – John

4

simple que he encontrado (en Mac OS) es utilizar

exec('afplay whatever.mp3', audioEndCallback) 
+1

También hay ['open'] (https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/open.1.html) en OS X. – elmigranto

6

Salida node-groove - Node.js unión a libgroove:

Esta biblioteca proporciona codificación y decodificación de audio en una lista de reproducción. Está destinado a ser utilizado como un back-end para aplicaciones de reproducción de música, sin embargo, es lo suficientemente genérico como para ser utilizado como un back-end para cualquier utilidad de procesamiento de audio.

Descargo de responsabilidad: Escribí la biblioteca, que es gratuita, de código abierto, y no está afiliada a ningún producto, servicio o empresa.

+3

Gracias por su sugerencia. Realmente me gusta libgroove. Sin embargo, es posible que desee mencionar que lo escribió. – BonsaiOak

+3

¿por qué es relevante? la calidad de la respuesta no se ve afectada por el autor del módulo. – andrewrk

+0

Creo que @BonsaiOak es correcto. El [centro de ayuda] (http://stackoverflow.com/help/behavior) dice: "Publique respuestas buenas y relevantes, y si algunas (pero no todas) son sobre su producto o sitio web, está bien. Sin embargo, _Debe_ revelar su afiliación en sus respuestas ". – TachyonVortex

1

Otro buen módulo para reproducir sonido desde la consola es play. Puede usar archivos sample wav incluidos dentro del paquete. código de ejemplo es el siguiente:

var play = require('play'); 
play.sound('./node_modules/play/wavs/sfx/ding.wav'); 
+0

La versión instalada a través de npm (0.5.0) no implementa la devolución de llamada. Parece que fue implementado en el repositorio github, pero aparentemente nunca fue lanzado. –

1

Usted puede utilizar play-sound módulo también:

var player = require('play-sound')(opts = {}) 

player.play('./music/somebody20.flac', function (err) { 
    if (err) throw err; 
    console.log("Audio finished"); 
}); 
Cuestiones relacionadas