Beenden Sie die Aufnahme nach einiger Zeit

13

Ich habe ein Gerät, mit dem das Video mit der Webcam aufgenommen werden kann ffmpeg. Es funktioniert großartig, wenn die Aufnahme gestartet wird, erhalte ich das USR1-Signal. Und nach dem Stoppen der Aufnahme erhalten wir das USR2-Signal.

Aber ich möchte die Aufnahme nach 1 Stunde Aufnahmezeit stoppen.

Ich weiß es nicht, aber ich denke, ich muss das USR2-Signal nach 1 Stunde an das Gerät weiterleiten.

Wie kann ich das machen ... !!!

Danke im Voraus.

Prakash V Holkar
quelle

Antworten:

23

Verwenden Sie die -tOption. Von man ffmpeg:

-t Dauer (Eingabe / Ausgabe)

Begrenzen Sie bei Verwendung als Eingabeoption (vorher -i) die Dauer der aus der Eingabedatei gelesenen Daten.

Wenn Sie als Ausgabeoption (vor einem Ausgabedateinamen) verwendet werden, beenden Sie das Schreiben der Ausgabe, nachdem ihre Dauer die Dauer erreicht hat .

Die Dauer muss eine Zeitdauer-Spezifikation sein, siehe Abschnitt Zeitdauer im Handbuch ffmpeg-utils (1) .

-tound schließen -tsich gegenseitig aus und -thaben Priorität.

Beispiel, das eine Stunde lang aufzeichnet:

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

Oder in Sekunden:

ffmpeg -f v4l2 -i /dev/video0 -t 3600 output
llogan
quelle
3
-tverwendet die hier verfügbare Zeitdauersyntax
Hengjie
5

Wenn Sie ffmpeg oder avconv über die Befehlszeile ausführen, können Sie den folgenden timeoutBefehl verwenden:

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

Wenn Sie das Zeitlimit im Voraus kennen, sollten Sie auf jeden Fall die angegebenen Methoden anwenden. Wenn Sie jedoch wirklich ein Signal an den Prozess senden möchten, können Sie den Befehl kill verwenden (obwohl 90% für TERM oder KILL verwendet werden, können Sie JEDES Signal senden - kill -s USR2 pid)

Alessandro Chemini
quelle