LennyKrost ciao, una cosa che mi viene in mente al volo (e che pare funzionare facendo un rapido test) è quella di usare due istanze di ffmpeg e passare i dati da una all'altra, ad esempio tramite UDP su localhost.
La prima istanza farebbe ffmpeg -i INPUT -c copy -f mpegts udp://localhost:1234
(ovviamente adatta con tutti i tuoi eventuali parametri di codifica e aggiungi la registrazione su file).
La seconda: ffmpeg -i udp://localhost:1234 -c copy rtsp://output
(ho testato con ffplay ma dovrebbe funzionare allo stesso modo con ffmpeg).
La seconda istanza probabilmente muore quando il server di destinazione va KO e a quel punto dovresti riavviare il comando. Puoi farlo con un semplice script che mette il comando in "loop" (o ancora più brutalmente con un cron che controlla se il comando è ancora su).
Se il secondo comando non è in esecuzione il primo se ne frega, trattandosi di UDP (manda quindi i dati verso il nulla).
Un'alternativa sono forse le named pipe su Linux (mkfifo
) ma ho dei dubbi possano funzionare per il fatto che se nessuno legge dalla pipe chi ci scrive a un certo punto esaurirà il buffer e probabilmente si bloccherà.