Zatrzymaj nagrywanie po pewnym czasie

13

Mam urządzenie nagrywające wideo za pomocą kamery internetowej ffmpeg. Działa świetnie, gdy rozpoczyna się nagrywanie, otrzymuję sygnał USR1. A po zatrzymaniu nagrywania otrzymujemy sygnał USR2.

Ale chcę zatrzymać nagrywanie po upływie 1 godziny.

Nie wiem, ale myślę, że muszę przekazać sygnał USR2 do urządzenia po 1 godzinie.

Jak mogę to zrobić ... !!!

Z góry dziękuję.

Prakash V Holkar
źródło

Odpowiedzi:

23

Użyj -topcji. Od man ffmpeg:

-t czas trwania (wejście / wyjście)

W przypadku użycia jako opcji wejściowej (wcześniej -i) należy ograniczyć czas odczytu danych z pliku wejściowego.

W przypadku użycia jako opcji wyjściowej (przed nazwą pliku wyjściowego), przestań zapisywać dane wyjściowe po upływie czasu trwania .

czas trwania musi być specyfikacją czasu trwania, patrz sekcja Czas trwania w podręczniku ffmpeg-utils (1) .

-toi -twzajemnie się wykluczają i -tma pierwszeństwo.

Przykład, który nagrywa przez godzinę:

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

Lub w kilka sekund:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
Llogan
źródło
3
-tużywa składni Time Duration dostępnej tutaj: ffmpeg.org/ffmpeg-utils.html#Time-duration
Hengjie
5

Jeśli używasz ffmpeg lub avconv z wiersza poleceń, możesz użyć timeoutpolecenia:

timeout 3600 avconv -f video4linux2 -r 25 -i /dev/video0  -vcodec mpeg4 -y out.mp4
Sylvain Pineau
źródło
0

Jeśli znasz wcześniej limit czasu, zdecydowanie powinieneś użyć podanych metod, jednak jeśli naprawdę chcesz wysłać sygnał do procesu, możesz użyć polecenia kill (pomimo użycia 90% dla TERM lub KILL, możesz wysłać DOWOLNY sygnał - kill -s USR2 pid)

Alessandro Chemini
źródło