ffmpeg detiene la transmisión si una entrada se detiene

ffmpeg detiene la transmisión si una entrada se detiene

Estoy intentando crear una transmisión mpeg-ts donde el video es una captura de pantalla de Xvfb y el audio es de radio por Internet (transmisión mp3 o aac). Funciona razonablemente bien, pero si hay un problema con la radio por Internet, toda la salida se detiene, no solo el audio, y no se reanuda hasta que finalizo ffmpeg y lo inicio de nuevo.

Aquí está la línea de comando que estoy usando.

DISPLAY=:1 ffmpeg -re -video_size 768x576 -framerate 50 -f x11grab -i :1 -i http://internet-radio/mp3 -c:v mpeg2video -b:v 6000k -minrate 6000k -maxrate 6000k -bufsize 3000k -dc 10 -top 0 -f mpegts -c:a mp2 -ac 2 -b:a 192k -flags +ilme+ildct -vf "tinterlace=interleave_top" udp://192.168.0.1:1234?pkt_size=1316

¿Hay alguna manera de evitar que se detenga (simplemente producir silencio hasta que regrese la entrada de audio) o al menos detectar que ha fallado para poder escribir un script para reiniciarlo?

Respuesta1

Intenta usar eluna almohadillaFiltro de audio para extender la transmisión con silencio indefinido. Debería poder agregar un-afcomando a su cadena existente...

-vf "[0]tinterlace=interleave_top" -af "[1]apad"

...o cambiar el existente-vfcadena a-filtro_complejopara manejar los comandos de filtrado de audio y video...

-filter_complex "[0]tinterlace=interleave_top;[1]apad"

Tenga en cuenta que los especificadores de flujo de entrada ("[0]" para x11grab y "[1]" para el flujo de audio)debiera seropcional, pero algunas versiones anteriores de FFmpeg pueden confundirse si no se especifican.

Si ninguna de las configuraciones de filtro funciona como está, es posible que deba agregar el-más cortomarca también en tus parámetros de salida generales (no como parte de la cadena de filtro, claro está), por ejemplo:

-filter_complex "[0]tinterlace=interleave_top;[1]apad" -shortest

información relacionada