Gostaria de sugerir o comando timeout
. Eu uso com o ffmpeg para gravar um fluxo HTTP ao vivo.
$ timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
Start COMMAND, and kill it if still running after DURATION.
DURATION is a floating point number with an optional suffix:
's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
Ele deve vir pré-instalado na maioria das distribuições do Linux. Por 10 segundos, basta executar:
$ timeout 10s ffmpeg -f x11grab -y -r 60 -video_size 1920x1080 -i :0.0 -vf format=gray -pix_fmt yuv420p myfile
Observe que há também outro tempo limite , que também permite limitar a memória e a frequência da CPU.
Quanto ao seu problema com o ffmpeg, isso é de man ffmpeg
:
SYNOPSIS
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Você precisa mover o argumento -t
antes de -i
.