Este projeto visa desenvolver uma aplicação de videoconferência descentralizada em Python usando comunicação por sockets. A aplicação permite que os usuários se registrem em um servidor e estabeleçam conexões Peer-to-Peer (P2P) para realizar videoconferências.
-
O socket cliente deve:
- Registrar-se no servidor utilizando um nome e um IP exclusivos e indicando a porta apta para receber o pedido de chamada
- Realizar consultas de endereços de portas por nomes específicos dos usuários.
- Caso o cliente deseje se desvincular do servidor de registro, ele deve enviar uma mensagem com esta solicitação.
-
O socket servidor deve:
- Armazenar e imprimir uma tabela dinâmica contendo informações dos clientes.
- Imprimir mensagem de confirmação de registro de novo usuário.
- Caso o usuário já esteja cadastrado, imprimir mensagem informando esta condição.
- Responder aos clientes o nome de um nó conectado e seus respectivos endereços e números de porta, quando assim solicitado.
- Caso o cliente solicite o fim da conexão, o servidor deve responder com mensagem de encerramento e, depois, fechar o socket.
-
O socket cliente deve:
- Solicitar a videochamada a um par IP:porta de destino utilizando uma mensagem específica, como se fosse a mensagem de INVITE do protocolo SIP. Assim, o receptor pode negar ou aceitar o pedido.
- A reprodução da mídia deve ser iniciada assim que a chamada é aceita.
- Conter métodos para encerrar a transmissão. (A lib vidstream faz isso, a transmissão é encerrada caso a tecla q seja pressionada)
-
O socket servidor deve:
- Aceitar ou rejeitar a chamada.
- Se a chamada for aceita, informar na resposta o número das portas para receber os fluxos de áudio e vídeo.
-
Opcional
- Interface gráfica
- Tratativas de latência.
- Tratativas de perda de pacotes.
Execute o arquivo server.py em um terminal e o cliente.py em outro.
Este projeto está sob a Licença MIT - veja o arquivo LICENSE para detalhes.