Pare a gravação após algum tempo

13

Eu tenho um dispositivo que grava o vídeo usando a webcam ffmpeg. Está funcionando muito bem, quando a gravação é iniciada, estou recebendo o sinal USR1. E depois de parar a gravação, recebemos o sinal USR2.

Mas quero parar a gravação após 1 hora de gravação.

Não sei, mas acho que tenho que passar o sinal USR2 para o dispositivo após 1 hora.

Então, como posso fazer isso ... !!!

Desde já, obrigado.

Prakash V Holkar
fonte

Respostas:

23

Use a -topção De man ffmpeg:

-t duração (entrada / saída)

Quando usado como uma opção de entrada (antes -i), limite a duração dos dados lidos no arquivo de entrada.

Quando usado como uma opção de saída (antes de um nome de arquivo de saída), pare de gravar a saída depois que a duração atingir a duração .

duration deve ser uma especificação de duração, consulte a seção Duração do tempo no manual ffmpeg-utils (1) .

-toe -tsão mutuamente exclusivos e -ttêm prioridade.

Exemplo que registra por uma hora:

ffmpeg -f v4l2 -i /dev/video0 -t 01:00:00 output

Ou em segundos:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
llogan
fonte
3
-tusa a sintaxe Tempo de Duração disponível aqui: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Se você estiver executando ffmpeg ou avconv na linha de comando, poderá usar o timeoutcomando:

timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0  -vcodec mpeg4 -y out.mp4
Sylvain Pineau
fonte
0

Se você conhece o tempo limite com antecedência, deve usar definitivamente os métodos fornecidos, no entanto, se realmente deseja enviar um sinal para o processo, pode usar o comando kill (apesar de ser usado 90% para TERM ou KILL, pode enviar QUALQUER sinal - kill -s USR2 pid)

Alessandro Chemini
fonte