Primero vamos a responder la pregunta ¿Qué es RTMP?, y en pocas palabras, es un protocolo de transporte para llevar audio y video entre el codificador y la plataforma de streaming, el codificador también es conocido como encoder.
El encoder puede ser hardware o puede estar integrado dentro de un software como OBS (Open Broadcaster Software), Streamlabs o Ecamm. A estas aplicaciones se les configura un URL RTMP, que te lo proporciona la plataforma de transmisión como YouTube, Facebook, Twitch etc.
Un poco de historia
El protocolo RTMP (Real Time Messaging Protocol) fue creado inicialmente por Adobe para transmitir audio y video entre sus plataformas, fue integrado dentro del player de flash que es el reproductor de video de Adobe. También se integró en Adobe Air que era un entorno para desarrollo multiplataforma.
Aunque al día de hoy, es utilizado por los CDNs y plataformas de streaming para recibir el video en vivo de los usuarios. Así plataformas como Facebook, YouTube, Amazon, etc. reciben el streaming a través de RTMP.
Técnicamente hablando, RTMP utiliza TCP (Transmisión Control Protocol), que es una de las maneras de “asegurar” que la información va a llegar correctamente. Con TCP se tiene un mayor control sobre el orden de los paquetes y su entrega. Es un protocolo muy utilizado en internet para garantizar que la información llega del punto A al punto B, en este caso del encoder a la red social.
En la imagen inferior se puede apreciar la cámara que se encuentra conectada al encoder o software de transmisión, y este es el encargado de encapsular el Audio (AAC) y el video (H.264) comprimido para que pueda ser enviado a través de internet. La plataforma de Facebook, YouTube o cualquier otra, recibe estos paquetes, los ordena, y los muestra a los usuarios.
¿Cuándo se utiliza RTMP?
Las plataformas de streaming de video te proporcionan un URL y el número de puerto al que debes enviar tu transmisión. El puerto RTMP default es el TCP 1935, aunque es posible cambiarlo.
El siguiente URL es un ejemplo de facebook a través del puerto 80:
rtmp:// rtmp-api.facebook.com:80/rtmp/
Este URL lo deberás insertar en el software o hardware de emisión. Y se utiliza para garantizar, en la medida de lo posible, que tu video esté llegando correctamente. Aunque si los paquetes dejan de llegar o se pierden en el camino, la transmisión se verá «pixeleada» o entrecortada.
Si quieres saber ¿Cómo configurar el URL rtmp de Facebook en OBS? y poder hacer live streaming a Facebook, entonces debes de ver el siguiente video. En donde explico
Otra opción puede ser que utilices Streamlabs para YouTube o Facebook, en el siguiente video podrás ver su configuración.
La plataforma de streaming sólo es un re-transmisor del video, si el video llega incorrecto o de mala calidad, así lo reenviará y así lo verá el usuario final.
Hay plataformas de streaming que te reciben un sólo bitrate en rtmp y ellos se encargan de generar los otros bitrates. Esto con el objetivo de brindarle al espectador un streaming adaptivo . Y en otras plataformas, deberás enviar un flujo de video por cada bitrate.
Usualmente la plataforma te asigna una clave de transmisión, la cual servirá como contraseña para que nadie más utilice el canal.
Servidor RTMP
Como mencioné al inicio RTMP es muy utilizado por las redes sociales o CDN para recibir el streaming de los usuarios, más no es recomendable utilizarlo para la transmisión hacia la audiencia ya que no es dinámico. Para eso se utiliza un protocolo dinámicos como HLS, (HTTP Live Streaming) que su función es entregar una calidad de streaming de acuerdo a la velocidad de internet que tenga el espectador. Si el usuario tiene poco internet se le entrega un streaming de calidad baja, si tiene un internet de alta velocidad, se le entrega la calidad más alta y esta calidad puede estar cambiando dinámicamente.
Entonces lo mejor es recibir el streaming en RTMP y distribuirlo a los espectadores en HLS, a este proceso se le llama transcoding o transcodificación, que consiste en convertir de un protocolo a otro protocolo.
NGINX te permite configurar un servidor RTMP para que puedas recibir el streaming, pero no hace la transcodificación, en otras palabras, recibes RTMP y entregas RTMP. Para un escenario en donde tienes un ambiente controlado te puede servir, pero para distribuirlo por Internet puedes tener problemas con usuarios que tienen poco ancho de banda.
La mejor opción es utilizar un servidor que haga transcoding como Wowza Media Server, que entre sus muchas funciones tienen la opción de recibir RTMP y entregar HLS. Así podrás entregar un streaming adaptivo a tus usuarios.
Finalmente dentro de RTMP es posible transportar video comprimido en H.264 y el audio comprimido en mp3 o AAC. Aunque lo más utilizado es AAC por que es compatible con los productos de Apple.
Con este protocolo podrás enviar tu Live streaming en calidad HD, 720p (1280×720) y 1080p (1920×1080).
Si necesitas información técnica y detallada del protocolo, aquí la encontrarás.