¡Hola developer 👋🏻! En este branch del repo puedes ver cómo enviar vídeo y audio en tiempo real usando WebRTC y forma parte de mi vídeo Enviar vídeo 📹 y audio 🔊 a través de WebRTC | Cap. 2
-
Captura de medios
El navegador solicita acceso a la cámara y micrófono del usuario usando la API getUserMedia. Así se obtiene el stream de vídeo y audio local. -
Conexión peer-to-peer (P2P)
Se establece una conexión directa entre navegadores usando RTCPeerConnection de WebRTC. Esto permite enviar el vídeo y audio capturados de un usuario a otro sin pasar por un servidor intermedio. -
Intercambio de señalización
Para que los dos puntos puedan conectarse, primero intercambian mensajes de señalización (SDP y ICE candidates). En esta demo, el intercambio se realiza a través de un servidor de señalización simple (por ejemplo, usando Python/AIOHTTP y HTTP). -
Transmisión en tiempo real
Una vez negociada la conexión, el vídeo y audio fluyen directamente entre los peers. La transmisión es segura y con baja latencia. -
Visualización
Los streams de vídeo local y remoto se muestran en la interfaz web usando etiquetas<video>
, permitiendo la comunicación visual y auditiva en tiempo real.
- WebRTC (JavaScript) para la comunicación en tiempo real
- Python (AIOHTTP) para la señalización (negociación inicial)
- HTML/CSS para la interfaz
¿Te gustaría añadir instrucciones para ejecutar la demo o detalles sobre dependencias? Si necesitas la sección de instalación o uso, dime y te ayudo a escribirla.
Para ejecutar este proyecto necesitas tener instalado Python 3.9 o superior 🐍.
Utiliza un virtual environment para evitar conflictos con otras dependencias de tu sistema.
python -m venv venv
source venv/bin/activate # En Linux/Mac
venv\Scripts\activate # En Windows
Instala las dependencias necesarias:
pip install -r requirements.txt
Cuando trabajamos con WebRTC, es necesario utilizar HTTPS y certificados SSL. Puedes generar certificados autofirmados para propósitos de desarrollo.
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=localhost"
Para ejecutar el proyecto, utiliza el siguiente comando:
python app.py