2010-10-25 13 views
11

Me gustaría desarrollar una aplicación web de muestra que pueda enviar y leer audio sobre la marcha.Creando una Radio Web

La idea es desarrollar un sitio web con HTML5/JS. Por lo tanto, la parte de administrador (en php o en cualquier otro lado del servidor) me permitirá enviar audio desde un micrófono.

Luego, en el lado del cliente, el usuario puede escuchar la secuencia con la etiqueta <audio> por ejemplo.

¿Es posible? ¿Alguien usó una solución fuerte (abierta/gratuita) haciendo eso?

Gracias,

Saludos.

Respuesta

1

http://web.psung.name/zeya/ - esta aplicación transcodifica su música sobre la marcha y la transmite utilizando HTML5. Tal vez esto ayude un poco;)

+0

Gracias por la respuesta.Voy a probar esta solución esta noche! – Zakaria

+0

¿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

+0

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

1

Hay una especificación para interacting with devices, como micrófonos, pero es pronto y no conozco ningún soporte para ello.

Si desea algo que pueda interactuar con un micrófono hoy, consulte Adobe Flash.

1

No creo que pueda hacer algo como esto con solo JavaScript y HTML5. Y si pudiéramos, probablemente tendremos que esperar mucho antes de que los clientes puedan usarlo en su navegador. Como dijo David, Flash funcionaría, el problema es que: A) muchos dispositivos no lo soportarían y B) Flash está lejos de ser gratuito. Hay otras formas de hacer lo que describió, pero requerirían otra programación o al menos otros complementos. La única otra alternativa en la que puedo pensar es Silverlight de Microsoft, gratuita y no excesivamente difícil de usar, tiene soporte de micrófono, aunque no estoy seguro de lo genial que es. Espero que esto ayude.

+0

Aquí hay un enlace al sitio web de Microsoft para Silverlight: http://www.silverlight.net/ – Blake

+0

Gracias por su respuesta. El problema es que quiero implementar una solución multiplataforma. Por lo tanto, me dirijo a dispositivos como iPads ... – Zakaria

+0

Para la plataforma cruzada Flash es una muy mala idea, el iPad ni siquiera es compatible con Flash. Sin embargo, dudo que tenga algún soporte para Silverlight ether. Veo tu problema con el mercado móvil. Preguntaré alrededor y veré si puedo encontrar otra solución para ti. Cuando se me ocurra algo, dejaré otro comentario aquí. – Blake

1

La etiqueta de audio HTML no especifica ningún códec en particular, por lo que los proveedores de navegadores pueden elegir libremente el suyo. Actualmente, ninguno admite un formato de transmisión, aunque eso podría suceder. En cuanto a la grabación, no estoy seguro de que realmente quieras admitir grabaciones ilimitadas desde el navegador, porque tendrías problemas de concurrencia. ¿De verdad permitirías que todos graben a la vez?

Parece tener más sentido tener un acceso limitado a la grabación de una sesión de medios de transmisión en el servidor, y luego permitir el acceso archivado a través del navegador. La recuperación se puede realizar fácilmente con la etiqueta HTML AUDIO, pero básicamente hemos inventado el podcast.

1

Sería posible manipular las etiquetas de audio para "transmitir" el contenido, pero tendría que haber un búfer de unos segundos (al menos). Vuelva a configurar la fuente de la etiqueta en una URL que proporciona los próximos segundos cada dos segundos (no archivos estáticos, por supuesto, pero servidos dinámicamente desde la transmisión). Lado de administración Creo que estás atascado con un complemento ya que necesitas acceso a micro.

1

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).

+0

Pensé que sería fácil poner en marcha un servidor "Icecast" que transmitirá una transmisión de audio a través de una URL. Luego, en una página HTML, la etiqueta de audio lo obtendrá ... – Zakaria

2

Casi cualquier solución que elija sufrirá una mala aceptación en un dispositivo u otro, y la solución basada en la web es aún peor (como todos señalaron).

Si desea cubrir la mayor audiencia posible, configure un servidor de transmisión como Icecast y difunda en MP3 y/o OGG (ambos son mejores). Casi todos los dispositivos conectados a Internet con capacidades razonables podrán reproducir audio en tiempo real, así que deja que el usuario elija el reproductor adecuado o el favorito.