Como crear un streaming con Android Studio
Tags: streaming, android, rtmp, nginx
Published: 2020-01-29 09:27:00

Hace unos dias cree un streaming para Android utilizando Android Studio con Kotlin como lenguajes, es resultado es mas que aceptable.
Aquí te voy a enseñar como se hace.

Para crear un streaming lo primero que necesitas es un servidor RTMP y un HTTP para esto usé Ngxinx el cual permite crear servidores;

Demo:
![Streaming con Android Studio](https://github.com/TakuSemba/RtmpPublisher/raw/master/arts/sample.gif) 


Documentación del repositorio:
Repositorio para Descargar gratis: https://github.com/JuanseMastrangelo/Streaming-con-Android-RTMP

Dentro de la carpeta "nginx/conf" veremos un archivo llamado nginx.conf el cual almacena los servidores que necesitamos crear al ejecutar el servicio. Veremos que dentro hay un servidor HTTP (puerto: 81) y un RTMP (puerto: 1935).
El streaming se realiza mediante el protocolo RTMP (Real Time Messaging Protocol - Protocolo de mensajería en tiempo real) el cual transfiere pequeños videos de x segundos al servidor de ngxinx guardando estos pequeños fragmentos de videos (.ts) en la carpeta "nginx/hls". Junto a estos archivos existe el principal con extensión .m3u8 el cual crea un lista de reproduccion interna para ordenar los fragmentos (.ts).
El nombre de estos archivos de la carpeta "nginx/hls" se da a partir de la llamada a la url que vemos mas adelante.

Luego tenemos el servidor HTTP el cual se encargará de extraer mediante el index.html (dentro de la carpeta "nginx/html") el archivo con extensión .m3u8 (dentro de la carpeta "nginx/hls") utilizando los servicios de video.js.



Como podemos imaginar, el cliente desarrollado con Android Studio utilizando la libreria RtmpPublisher enviará los videos (.ts) al servidor utilizando la variable url en MainActivity.kt donde reemplazaremos ###.###.### por nuestra IPV4. Como vimos anteriormente el ejemplo de url posee en su ultima parte el nombre stream, este es el nombre por el cual se llamarán los archivos en el servidor (si se quiere cambiar tambien tienes que cambiar el index.html -> src de la etiqueta video).


Instalación:
Para instalar necesitamos tirar la carpeta nginx dentro del disco local C: y abrir con android Studio la carpeta dentro del .rar. Una vez abierto el projecto en Android necesitamos reemplazar de MainActivity.kt la variable url, donde está ###.###.### reemplazaremos por nuestra IPV4 (usar dentro de la console el comando: ipconfig para revelar nuestra ipv4). Una vez cambiada nuestro cliente Android ya esta listo para usarse.
Para dar comienzo al servidor necesitaremos abrir una consola o terminal dirigirnos a donde tenemos el nginx, en este caso en usaremos el comando "cd C:/nginx". Luego colocaremos el comando nginx.exe para ejecutar el exe (esto lo hacemos para saber si hay errores) si no aparece nada en consola quiere decir que ya esta abierto el servidor exitosamente.

Para ver nuestro stream necesitaremos comenzar a grabar con nuestro dispositivo Android y podemos mirarlo en la url: http://localhost:81. Cabe mencionar que tiene un delay de 30 segundos asique tener paciencia.

Si queremos enviar desde nuestra pc como hariamos en caso de un directo en Youtube o Facebook necesitaremos OBS (https://obsproject.com/es)

Para cerrar el servidor ejecutar el archivo stop.bat dentro de "C:/nginx".

Muchas gracias por leer este articulo, cualquier consulta mi mail es juansmastrangelo@gmail.com