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
- Comprueba si tu ffmpeg sabe SRT:
ffmpeg -protocolstiene que nombrarsrten la lista. Una entradasrtpes otra cosa y no basta. Si faltasrt, necesitas un ffmpeg con libsrt. Dónde conseguir uno lo dice ffmpeg.org. - 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>. - 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 a1000000para 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.