Streaming de video con FFMPEG

Hola, tu has llegado hasta aquí porque tuviste interés en el tema, al igual que yo, y cuando encontré la informacion necesaria realice pruebas y todo me funciono no a la primera pero se logro lo que se buscaba y por eso escribo este post, es normal que algunos proyectos donde envíes vídeo a servidores RTMP utilices software como OBS, Streamlab, entre otros, pero en algunas ocasiones esto no es lo que tu necesitas, o simplemente pensaste en algo diferente y único, si hiciste lo ultimo te doy la bienvenida al mundo de los creadores…. dejemos de hablar tanto y veamos lo que toca hacer para transmitir vía FFMPEG.

Primero que todo necesitamos un vídeo que transmitir, un servicio a donde transmitir (Youtube, Twich, Facebook, Custom RTMP), por supuesto tener instalado FFMPEG y ganas de aprender.

Bueno con el siguiente comando podemos hacer nuestro streaming.

ffmpeg \
-i "$SOURCE" -deinterlace \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 712000 -bufsize 512k \
-f flv "$STREAM/$KEY"
Bueno para que no se pierdan, el comando tiene variables a usar en un archivo de shell, primero voy a colocar lo que son cada variables y después explicare cada parte del comando.
VBR="2500k"        # Bitrate del vídeo
FPS="30"           # A cuantos FPS vamos a transmitir
QUAL="medium"      # Calidad del output

STREAM=            # URI del Stream

SOURCE="fuente"    # Fuente, esta puede ser variada. un archivo, camara, etc

KEY="llave"        # llave de la transmisión.

Ya con las variables es solo cuestion de colocar todo junto en un archivo con extensión .sh y darle permisos de ejecucion con chmod +x

vamos a explicar.

-i "$SOURCE" -deinterlace \  esta linea nos permitirá indicarle a ffmpeg el input con una opción de des entrelazar el vídeo o fuente.

-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \ esta linea es donde indicamos el codec de vídeo que va a utilizar el formato, con pix_fmt escojamos el formato del pixel, luego configuramos la calidad, los fps y el bitrate del vídeo.

-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 712000 -bufsize 512k \  si el vídeo tiene audio, entonces colocamos el codec de audio, la frecuencia los hilos y el buffer.

-f flv "$STREAM/$KEY" por ultimo seleccionamos el formato de salida y colocamos la url del stream junto con su respectiva llave.

es sencillo, y nos puede servir para varias cosas entre ellas transmitir vídeo vía RTMP desde un servidor, hacer por ejemplo un restreaming con modificaciones del vídeo, entre otras cosas interesantes, ademas si tomas este ejemplo puedes cambiar el stream de destino con un simple paso. debes tener en cuenta que FFMPEG consume alto CPU para realizar sus procesos.
Share

You may also like...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *