2012-06-07 27 views
6

Actualmente estoy trabajando en un proyecto que usa audio HTML5 y tenemos problemas con las limitaciones de los dispositivos iOS (principalmente limitación de múltiples canales de audio).Uso de Node.js para transmitir audio a la etiqueta de audio html5 y eludir la limitación de iOS

Estaba pensando que es posible controlar los sonidos del lado del servidor usando node.js. El cliente se conectaría a una sola url de audio y el servidor de nodos transmitirá sonidos en vivo a través de este único canal haciendo todas las mezclas y transiciones en vivo en el servidor.

¿Es técnicamente posible? ¿Puedes analizar audio en node.js y hacer algunas mezclas en vivo? ¿Crees que el servidor explotará con más de 5 clientes simultáneos?

Gracias

+0

¿Qué espera lograr que no se puede hacer mediante el procesamiento previo del archivo de audio? –

+0

@SamDufel, por ejemplo, un sonido de fondo constante con otros sonidos que se pueden activar haciendo clic. De hecho, vamos a utilizar una solución de procesamiento previo para este proyecto específico, pero estaba pensando que podría ser una solución para experiencias en tiempo real/dinámicas. –

+0

Interesante ... No estoy seguro de que sea posible, sin embargo, debido a problemas de caché. –

Respuesta

4

Sí, esto es totalmente posible, pero como Sam señaló, zonas de separación es un problema. No es importante retraso que se acumula en varios puntos:

  • Obtención de Comandos de control del cliente
  • mezcla de audio PCM en bruto en un buffer interno
  • de codificación de datos con el códec correcto (requiere que hagas esto en trozos)
  • Envío de datos de audio
  • búfer del lado del cliente
  • búfer de reproducción en el lado del cliente

Agregue todo esto, e incluso si lo hace funcionar muy rápido, todavía está buscando un retraso de unos segundos.

Si decide seguir esta ruta, necesitará una aplicación externa (o escriba su propia extensión de nodo) para realizar la mezcla y la codificación por usted. Sox es probablemente una opción decente, y FFMPEG incluye muchos códecs para su uso. Puede usar ambos sobre STDIO.

En cuanto a la carga del servidor ... este no es un proceso liviano, pero tendría que perfilarlo para ver qué tan malo es en realidad. Sugiero que hagas otros intentos de reproducir varias transmisiones de audio a la vez del lado del cliente antes de intentar algo como esto.

+0

¿Por qué no utilizar? ¿cojo? @TooTallNate escribió un buen contenedor para él, https://github.com/TooTallNate/node-lame – EaterOfCode

+1

@EaterOfCorpses, LAME es solo un códec MP3. Si desea una mayor compatibilidad con el navegador, necesita admitir más que MP3.Además, las compilaciones FFMPEG a menudo incluyen LAME como un posible códec, por lo que también podría usar FFMPEG para tener un mejor soporte. – Brad

+0

Suena lógico. – EaterOfCode

Cuestiones relacionadas