2012-02-08 31 views
7

Me gustaría crear un servicio que permita a un usuario escuchar una llamada en vivo desde su navegador.Asterisk + Node.js + Streaming de navegadores

Tengo un poco de experiencia con Asterisk y esto parece ser lo suficientemente flexible como para hacer lo que he descrito.

Node.js suena bien porque se supone que maneja bien la concurrencia, y me gusta JavaScript.

En el navegador me imagino que la etiqueta de audio HTML5, ya que maneja la reproducción desde una fuente de transmisión, estaría bien para reproducir el sonido.

Un colega mío trabajó en conjunto una demostración de este concepto usando Icecast, pero no pudo terminarlo. También hubo importantes problemas de latencia.

Mi pregunta es la siguiente:

¿Cómo debo ir sobre cómo empezar en esto?

¡Se agradece cualquier ayuda!

Actualización:

me encontré con una presentación de discutir la implementación de SIP en la parte superior de WebSockets a través de un proxy SIP en el backend:

http://sip-on-the-web.aliax.net/

Una vez que tengo esta en funcionamiento, el siguiente el paso sería implementar la transmisión. Parece que debería ser capaz de hacer un proxy de la salida de audio que normalmente iría al cliente de sip, a través de un servidor secundario que luego lo transmite al navegador. Me pregunto por qué esto no se pudo hacer todo en la memoria? Entonces no hay necesidad de escribir y leer el archivo a medida que avanza la llamada.

Respuesta

8

Si está dispuesto a esperar por Asterisk 11, estamos trabajando actualmente en la implementación de soporte para WebSockets directamente en Asterisk.Más sobre ella aquí:

Asterisk 11 WebRTC/RTCWeb Support

sólo voy a citar aquí Kevin, ya que él lo resume mejor que puedo:

"Hoy en día, las ramas de desarrollo en curso tendrá soporte para el transporte de WebSocket protocolo (utilizado para comunicar mensajes de señalización entre el navegador y Asterisk), SIP sobre WebSocket (actualmente está siendo estandarizado por IETF) e ICE/STUN/TURN (mecanismos de manejo de medios para NAT transversal y seguridad de configuración de conexión). Además, hay un nuevo Controlador de canal Jingle/Google Talk/Google Voice, y planeamos admitir también Jingle sobre WebSocket. En este punto, no tenemos una solución bastante completa (Se necesita una nueva versión de Canary del navegador Google Chrome con algunos pequeños cambios), pero cada una de las piezas ha sido probada y estamos ansiosos por ver que todo funcione en conjunto. Queremos agradecer a Iñaki y José del proyecto SIP-on-the-Web por proporcionarnos su stack SIP de JavaScript para usar durante nuestras pruebas, y probablemente también lo probaremos con el PhonoSDK para el soporte de Jingle. "

0

Creo que tratar de transmitir un archivo de audio mientras está siendo grabada tendrá problemas de latencia extremas que usted no será capaz de moverse. Si desea escuchar en tiempo real una conversación telefónica, le sugiero que consulte Phono. Es un complemento JQuery que convierte su navegador web en un teléfono. Luego, simplemente tiene al oyente en conferencia con la conversación en silencio.

+0

He visto Phono antes. Se ve bien bu t, tal como lo entiendo: tienes que usar el servicio Phono y el complemento está realmente usando el flash. No necesito acceder al micrófono del usuario, por lo que creo que están usando el flash, por lo que la transmisión a la etiqueta de audio, si es posible, parece que funcionaría. – Jonathan

+0

La transmisión puede funcionar si puede aceptar los problemas de latencia. Nunca será en tiempo real. Creo que necesitas un canal de comunicación abierto para escuchar en tiempo real. Es posible que desee buscar en otros teléfonos SIP basados ​​en navegador como este [http://www.mizu-voip.com/Products/WebPhone.aspx]. –

+0

Si puedo acceder a los sockets en el navegador, ¿por qué no puedo implementar un cliente sudo-sip usando un socket directo al servidor? Estoy seguro de que no es una tarea trivial, pero me pregunto si es posible. – Jonathan

0

Si no le molesta la latencia (causada por el almacenamiento en búfer de la transmisión de Icecast), Asterisk puede transmitir a Icecast (configurar la aplicación de Asterisk Ices).

Si no puede tolerar la latencia, necesitará un cliente SIP basado en navegador. Desafortunadamente, no hay muchos que no estén conectados al sistema telefónico de otra persona. Puede probar red5phone (http://code.google.com/p/red5phone/) pero eso requiere que configure un servidor Red5.