Con ffmpeg envías un archivo, una imagen de prueba o cualquier otra fuente que ffmpeg pueda leer por SRT a una entrada de tu estudio. Para eso necesitas un ffmpeg compilado con libsrt y la dirección de la entrada, que está en la pestaña «Entradas».

La línea de comandos de abajo es la forma con la que probamos nosotros. Tú solo pones el host, el puerto y el stream ID.

Preparación

  1. Comprueba si tu ffmpeg sabe SRT: ffmpeg -protocols tiene que nombrar srt en la lista. Una entrada srtp es otra cosa y no basta. Si falta srt, necesitas un ffmpeg con libsrt. Dónde conseguir uno lo dice ffmpeg.org.
  2. Abre tu estudio y, en la pestaña «Entradas», haz clic en «Conectar fuente» en la entrada. Ahí está su dirección. Tiene la forma srt://<host>:<port>?streamid=<id>.
  3. Pasa el host, el puerto y el stream ID a la línea de comandos. Los demás parámetros detrás del signo de interrogación se quedan como están abajo.

Enviar un archivo

ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p -b:v 6M -maxrate 6M -bufsize 6M -g 120 -bf 0 -c:a aac -b:a 128k -ar 48000 -ac 2 -f mpegts "srt://<host>:<port>?mode=caller&transtype=live&latency=200000&pkt_size=1316&streamid=<id>"

Las comillas alrededor de la dirección hacen falta porque, si no, la shell interpreta ella misma el &.

Qué significa cada parte

Parte Significado
-re Lee la fuente en tiempo real. Sin esta opción, ffmpeg envía el archivo tan rápido como puede calcular, y el estudio no recibe una señal en directo que sirva.
-i input.mp4 El archivo que se envía.
-c:v libx264 La imagen se codifica como H.264. El estudio también acepta H.265, por ejemplo con -c:v libx265.
-preset veryfast -tune zerolatency Codificación rápida sin retardo adicional en el encoder.
-pix_fmt yuv420p El formato de color habitual para los directos.
-b:v 6M -maxrate 6M -bufsize 6M 6 Mbit/s para la imagen, con límite superior. Eso mantiene el bitrate uniforme.
-g 120 Un keyframe cada 120 imágenes. A 60 imágenes por segundo son 2 segundos.
-bf 0 Sin B-frames.
-c:a aac -b:a 128k -ar 48000 -ac 2 Sonido en AAC, 128 kbit/s, 48 kHz, estéreo.
-f mpegts Empaqueta imagen y sonido como MPEG-TS, el formato en el que envían las fuentes SRT.

Y los parámetros de la dirección SRT:

Parámetro Significado
mode=caller ffmpeg establece la conexión, tu estudio la acepta.
transtype=live SRT en modo en directo.
latency=200000 La latencia SRT. ffmpeg la espera en microsegundos: 200000 son 200 ms.
pkt_size=1316 El tamaño de paquete que encaja con MPEG-TS.
streamid=<id> El stream ID de tu entrada. Por él reconoce el estudio a qué entrada pertenece la señal.

No hay passphrase. No añadas ningún parámetro passphrase.

Enviar una imagen de prueba

Si no tienes un archivo a mano o solo quieres comprobar el tramo, ffmpeg genera él mismo la imagen y el sonido: una imagen de prueba en movimiento en 1080p a 60 imágenes por segundo y un tono de 1 kHz.

ffmpeg -re -f lavfi -i testsrc2=size=1920x1080:rate=60 -re -f lavfi -i sine=frequency=1000:sample_rate=48000 -c:v libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p -b:v 6M -maxrate 6M -bufsize 6M -g 120 -bf 0 -c:a aac -b:a 128k -ar 48000 -ac 2 -f mpegts "srt://<host>:<port>?mode=caller&transtype=live&latency=200000&pkt_size=1316&streamid=<id>"

El comando sigue en marcha hasta que lo terminas con Ctrl+C. La imagen de prueba aparece en la Realización como escena de esa entrada, y el tono en el medidor de nivel de la entrada.

Adaptar

  • Otra tasa de imágenes: la distancia entre keyframes debe seguir siendo de 2 segundos. A 30 imágenes por segundo escribes -g 60, a 50 imágenes -g 100.
  • Conexión más débil: baja el bitrate, por ejemplo -b:v 4M -maxrate 4M -bufsize 4M. Los valores orientativos están en Los ajustes correctos del encoder.
  • Más latencia: en una conexión inestable subes latency, por ejemplo a 1000000 para un segundo. Qué valores tienen sentido lo explica Ajustar la latencia SRT.

Si no llega nada

  • Si ffmpeg avisa de que no conoce el protocolo, a tu ffmpeg le falta libsrt.
  • Si la conexión se corta enseguida, compara otra vez el host, el puerto y el stream ID con la pestaña «Entradas».
  • Si ffmpeg parece funcionar con normalidad y aun así no aparece imagen en el estudio, te ayuda Sin imagen en el estudio. En muchas redes de hoteles y empresas el UDP está bloqueado, y SRT necesita UDP.