Simplesmente abra o fifo para escrever (e mantê-lo aberto) de outro lugar também. Exemplo:
Em uma janela:
mkfifo /tmp/test.mts
exec 7<>/tmp/test.mts
ffmpeg -i /tmp/test.mts out.mp4
Em outra janela:
cat ... >/tmp/test.mts
cat ... >/tmp/test.mts
A ideia é que um leitor não receba um EOF de um pipe até que todos os processos que o abriram tenham sido fechados:
$ mkfifo /tmp/fifo
$ cat /tmp/fifo &
[1] 26437
$ exec 7>/tmp/fifo
$ echo yes >/tmp/fifo
yes
$ echo yes >/tmp/fifo
yes
$ echo yes >/tmp/fifo
yes
$ exec 7>&-
$
[1]+ Done cat /tmp/fifo
Sem o exec 7>/tmp/fifo
que mantém um identificador aberto para o fim de gravação de /tmp/fifo
, o cat
teria terminado após o primeiro echo
.