En este presente proyecto desarrollamos una aplicación de videoconferencia Peer-to-Peer (P2P) basada en la arquitectura del stack WebRTC en Rust. La aplicación transmisión de audio/video y transferencia de archivos en tiempo real permitiendo, también, la creación de nuevos usuarios con sus contraseñas para inicio de sesión, apagado/encendido del micrófono y cámara,
El trabajo principal fue implementar la pila de protocolos del stack WebRTC algunos desde cero y otros con la ayuda de crates.
Los componentes son:
- SDP (Session Description Protocol): utilizado para establecer la conexión entre pares.
- ICE (Interactive Connectivity Establishment): Protocolo de comunicación utiliazado para definir la ruta por la que se enviará el video.
- Servidor STUN: Soporte de direcciones Server Reflexive (STUN). Para poder utilizar servidor público.
- Comunicación encriptada con el Signalling Server (TLS): Mensajes entre el usuario y el servidor encriptados.
- Transmisión de Video (Encodeo y Desencodeo): Códec H264.
- SRTP (Secure Real-time Transport Protocol)
- DTLS (Datagram Transport Layer Security)
- Archivo de Configuración: Los componentes de la aplicación pueden ser configurados mediante archivos de configuración. Elegirmos usar .json.
- Inicio de Sesión, creación de usuarios nuevos y visualización de los estados de conexión
- Interfaz UI de la Aplicación: Implementación de vistas como Inicio de Sesión, Sala de Espera y Sala de Llamada. Visualización de estadíasticas de transmisión.
- Logs: Mantenemos registros de las acciones realizadas en Client y Server.
- Rivero, Tobías 106302
- Vargas, Alejandro 104121
- Paz Blanco, Pilar 105600
- Chen, Michelle Melisa 105506
A continuación se detallan los pasos para compilar y ejecutar el programa.
Para levantar el Signalling Server:
cargo run --bin signalling_server path_config_file
Para levantar el Client en una terminal:
cargo run --bin room_rtc path_config_file
{
"server_adder": "localhost:8000",
"users_db": "src/users.json"
}
{
"general_info": {
"server_adder": "192.168.0.15"
},
"sdp_handshake": {
"local_adder": "localhost:8090",
"server_adder": "192.168.0.15:8000",
"codecs": ["VP8", "H264"],
"ice_candidates": [ "192.168.0.114:8500", "192.168.0.114:8250"],
"offer_path": "src/offer2.sdp"
}
}