socketio socket example python video html5 audio websocket

python - flask socketio example



Implementación de video chat en tiempo real basado en la web con websockets HTML5 (5)

@ trabajo / tengo que ser rápido

Echa un vistazo a getUserMedia (CanIUse) - API (W3)

¿Alguien sabe cómo implementar voz / video sobre IP en una aplicación web usando websockets HTML5?

Sería bueno si pudiera implementar esto con PHP o Python ya que (desafortunadamente) no conozco ningún otro lenguaje de programación en este momento.

Un buen tutorial servirá, además de una solución ya construida que tengo que pagar.

Actualización1:
Se agregó video porque no solo está relacionado con audio / voip.

Actualización2:
La primera aplicación HTML5 Video Conference ya está creada. Ver mi propia respuesta


Parece que Ericsson creó la primera aplicación HTML5 Video Conference.

La técnica que usaron:

  • Implementado el elemento del dispositivo y la API de Stream (la GUI del elemento del dispositivo está escrita actualmente en JavaScript / CSS)
  • Se agregó MediaStreamManager para mapear URL de Stream a la tubería correspondiente en el backend de medios
  • Se agregó MediaStreamTransceiver para controlar el procesamiento y el transporte de medios relacionados.
  • Se agregó soporte para datos binarios en el protocolo WebSocket

Ver: labs.ericsson.com :

Video en YouTube: más allá de HTML5: demostración conversacional de voz y video | Ericsson Labs

Desafortunadamente, Ericsson no quiere compartir device_dialog.js (todavía).


Si desea ir solo con HTML5, necesitará un navegador que implemente el borrador de captura de medios HTML (disponible here ) para acceder a los datos brutos del micrófono.

Una vez que tenga estos datos a mano, debe enviarlos a través de la red. Websockets sería la opción HTML5 para tener viajes de ida y vuelta lo suficientemente rápidos con el servidor (enviando datos de audio locales y recibiendo datos de audio remotos al mismo tiempo)

Como mencionas Python, recomendaría buscar en la implementación retorcida de websockets.

Puede hacer que todos sus clientes se "registren" en el servidor de websocket con un identificador de llamadas, para que el servidor sepa dónde encontrar un identificador de llamadas determinado.

Luego, su servidor necesitará una API de "invitación", donde la persona que llama1 "invita" a la persona que llama2.

Una vez que se establece la llamada y cada cliente comienza a enviar sus datos de audio, el servidor podrá enviar estos datos de audio a la otra parte.

Luego de recibir datos de audio, el navegador necesitará reproducir estos datos de audio en los parlantes, probablemente usando la audioetiqueta HTML5.

Para hacer esto, puede verse obligado a utilizar un "truco": en lugar de hacer que el servidor websocket reenvíe los datos de audio brutos al cliente, es posible que necesite simular 2 archivos "infinitos":

  1. caller1.wav: sonido capturado en el micrófono caller1
  2. caller2.wav: sonido capturado en el micrófono caller2

El buscador caller1 agregará caller2.wav en el atributo audio.src una vez que la llamada está configurada (la persona que llama será informada de este evento a través de websocket) y con suerte si el servidor python agrega los datos de audio en bruto al caller2.wav tal como lo recibe, comenzaría a jugar.

¡Esto suena como un prototipo genial que vas a piratear!

Buena suerte en tu viaje,

Jerome Wagner


WebRTC podría ser una respuesta: http://www.webrtc.org/running-the-demos (actualmente solo Chrome Canary con el indicador MediaStream habilitado)

Vea la demostración: https://apprtc.appspot.com (asegúrese de mirar en un navegador adecuado) y codifique http://code.google.com/p/webrtc-samples/source/browse/trunk/apprtc/

La razón por la que estoy escribiendo es ... Tengo una tableta Android realmente barata y no puedo instalar Skype ni Vtok ni Google Voice está disponible fuera de los EE. UU. Necesito encontrar una solución basada en HTML5 ya que puedo ejecutar Opera Mobile 12 y tengo http://html5demos.com/ funcionando correctamente


webrtc es la respuesta ahora.

para la pila node.js: puede ver http://www.easyrtc.com/ . Tenga en cuenta que IE aún no ha creado soporte para las API que hacen que webrtc funcione.