Creo que lo que usted propone es factible en teoría, pero en la práctica los clientes y estándares web aún no son lo suficientemente maduros. Por ejemplo, mira este interesante blog sobre audio synthesis in JavaScript.
Ahora, para la teoría:
Alternativa 1: Espere a que los navegadores para añadir soporte para un formato de streaming de audio (por lo general, la etiqueta de audio actualmente soporta WAV, OGG y/o MP3).
Alternativa 2: Implementar la transmisión usted mismo ...
Para el lado del servidor (la entrada de audio del "micrófono"), supongo que puede hacer prácticamente lo que quiera. Por ejemplo, debería ser posible no conectar el micrófono al servidor, sino dejar que el servidor ejecute algún tipo de proceso de transcodificación desde otra fuente/servidor. Luego, puede tener una aplicación CGI/FastCGI a la que se conecten los clientes web para obtener la última ventana de transmisión (parte de la transmisión, por ejemplo, de 1 a 5 segundos).
En el lado del cliente web, probablemente pueda usar la etiqueta de audio y controlarla desde JavaScript para actualizarla periódicamente con nuevas ventanas de transmisión. La cola de muestras de audio no es compatible, por lo que tendría que encontrar algún tipo de mecanismo de sincronización personalizado. Una solución podría ser utilizar dos muestras de audio simultáneas que se desvanecen (minimizando así los clics & saltos resultantes de una sincronización incorrecta).
Gracias por la respuesta.Voy a probar esta solución esta noche! – Zakaria
¿Esto realmente transmite los datos, o simplemente transcodifica un archivo de audio y lo envía todo? A medida que la pregunta solicita la entrada de micrófono, no sería un archivo de audio en el servidor, sino una transmisión en su lugar. Miré la fuente, pero no estoy seguro si esto funcionaría para la entrada de micrófono o similar sobre la marcha. – sworoc
Supongo que envía todo, pero la radio por Internet funciona gracias a que los mp3 no tienen que marcar dónde está el final del archivo, y creo que Ogg Vorbis hace lo mismo. Así que deberíamos comprobar si enviar un archivo infinitamente (o dividirlo en fragmentos más pequeños y enviarlo parcialmente, y luego jugar juntos en el navegador de un cliente) sería suficiente. – flegmatyk