Streaming de torrents usando NodeJS y VLC

Streaming de torrents usando NodeJS y VLC

Antes de comenzar, me gustaría aclarar algunos puntos importantes debido a la aplicación y al código que voy a publicar:

  • Bajo ningún concepto apoyo la piratería de ningún medio, formato o producto digital y/o físico, ya que toda persona tiene derecho a cobrar por su trabajo.
  • De la misma forma que he aprovechado el conocimiento de otras personas, yo ofrezco mis conocimientos para quien pueda o quiera aprovecharlos mediante este blog.
  • Tanto el código fuente que he desarrollado, como las dependencias de terceros y las adaptaciones de las mismas están a disposición de todo el mundo.
  • La aplicación y el código fuente aquí expuestos, se ofrecen y publican solo con fines educativos, descargando toda la responsabilidad sobre quien realice un mal uso de la misma.

Bien, una vez aclarados estos puntos comencemos con la aplicación.

La idea surge cuando intento realizar streaming de un vídeo usando WebRTC y NodeJS.

Como no me convence la solución, me pongo a buscar información por internet y me encuentro con esta página.

Para sorpresa mía, resulta que es una librería que te permite hacer streaming de ficheros torrent desde el navegador y con unas pocas lineas de código.

Pasadas unas horas y viendo que no conseguía que funcionase con ficheros torrent, encuentro en la documentación que esta librería usa WebRTC para hacer el per-to-per pero no es compatible con los fichero .torrent.

Como soy un poco cabezón, continuo buscando y por fin encuentro unas dependencias para usar en NodeJS que te permiten hacer streaming de torrents.

A partir de ese momento, solo queda pelearse un poco con el código y las dependencias.

Al cabo de unos días creo una pequeña aplicación y su repositorio correspondiente.

Poniendo la aplicación en marcha

Una vez bajado / clonado el repositorio ejecutaremos npm i para instalar todas las dependencias necesarias.

A continuación ejecutaremos el comando node server.js, el cual nos levantara un servidor en local que se encargara de todo el proceso de streaming.

Levantando el servidor
Levantando el servidor

Ahora que nuestro servidor esta funcionando, abriremos la página index.html

Abriendo la página
Abriendo la página

Como había indicado al principio y para evitar problemas con derechos de autor, vamos a usar un fichero torrent sin copyright.

Seleccionado el torrent
Seleccionado el torrent

 

Cuando tengamos el fichero torrent en nuestro equipo, procederemos a subirlo a nuestra aplicación

Subiendo el torrent
Subiendo el torrent

En el momento hagamos clic sobre el botón, esta acción subirá en nuestro servidor de NodeJS a una carpeta llamada torrents el fichero del cual realizara el streaming.

Streaming torrent
Streaming torrent

Una cosa a tener en cuenta, es que desde el navegador que usemos para abrir el index.html deberemos instalar una extensión para evitar problemas de CORS.

El siguiente paso, sera abrir VLC y cargar un vídeo desde una URL que nos proporcionara NodeJS.

Carga url VLC
Carga url VLC
Carga url VLC
Carga url VLC

Comenzara el proceso de carga del vídeo desde la URL de NodeJS.

Carga url VLC
Carga url VLC

Cuando se haya obtenido una pequeña parte de la información, VLC comenzara a reproducir el vídeo mientras NodeJS continuar obteniendo el resto de la información, hasta completar todo el fichero.

Reproducir URL VLC
Reproducir URL VLC

Y ya solo nos queda comprobar que nuestro vídeo se muestra correctamente.