El server.py
es quien inicia la transmisión de video, este está programado para que la IP de quien ejecute el script, sirva de enlace con el cliente WebRTC y WebSockets. Las librerías implementadas son websockets 13.1, y aiortc.
Para instalar las dependencias necesarias, puede usar los siguientes comandos:
pip install websockets==13.1
pip install aiortc
Al archivo WebRTCManager.cs
se le debe agragar la IP del dispositivo donde se ejecute server.py
, para iniciar las negociaciaciones de los ICE Candidates y SDPs necesarias para que la trasmisión sea con exito.
El primer paso es agregar la librería WebSockets-Sharp. Se descarga websocket-sharp.dll a través de NuGet Gallery, descomprima el archivo .nupkg, ingrese a la carpeta lib, en ella encontrará el .dll, se adjunta junto a los archivos de Unity en Assets/Plugins. Puede encontrar la documentacion en: websocket-sharp.
WebRTC: la versión implementada para el protocolo de conexión es la 2.4.0-exp.11 · October 04, 2022. Con esta versión se logró establecer una correcta conexión para el envio de los ICE Candidates y la transmisión de las SDP. A través de Window/Package Manager, y agregando el paquete al entorno por medio de Add package from git URL... Puede encontrar la documentacion en: Unity
Para la integración de WebRTC en Unity, se debe agregar la siguiente dependencia:
La preparación del entorno consta de la creación de un canvas UI, panel, RawImage y un objeto vacio WebSocket, dónde se asignará el script, por ejemplo:
Adjunte el contenido de la carpera C#
a su entrono y asegurece de tener WebSockets ya instalado:
Asigne el script WebRTCManager.cs
al objeto WebSocket, asignele al script el RawImage que creó, e indique el puerto "Port" y la direccion ip en "Server Ip" (Sin espacios ni caracteres especiales) del despositivo donde desee ejecutar el script server.py
, por ejemplo:
Configure el objeto RawImage, en este caso se ajusta a 640x480:
Para este ejemplo, se ejecutó server.py
en una Raspberry Pi 4, que está conectada a la misma red wifi que el computador donde se encunetra el entorno de Unity:
Asegúrese de primero ejecutar server.py
. El siguiente paso es inicializar el entorno Unity. Si asignó de manera correcta la dirección IP en el entorno, en la consola podrá observar la transmisión de los ICE Candidates y SDPs. Por último, se carga la textura de manera automática al RawImage:
Como puede observar, la recepción de video ha comenzado. En este caso se visualiza el teclado y las Raspberry Pi usadas en esta práctica.