cat und split

Antworten
Nachricht
Autor
ivtvskript

cat und split

#1 Beitrag von ivtvskript » 14. Sep 2007 11:10

Hallo.
Folgendes habe ich in einem Wiki Eintrag entdeckt.

Code: Alles auswählen

datum=$(date "+%d.%m-%R")
cat /dev/video0 > /TV/aufnahme_vom_$datum.mpg & echo $! > /TV/killpid.txt
Somit habe ich die PID in einer Datei und kann das Programmm killen, geschieht alles über Cron.
Das klappt auch sehr gut. Damit wird ein Stream von einer Fernsehkarte aufgezeichnet.
Mein Problem ist das cat abbricht sobald die 4GB Grenze für die Dateigröße erreicht wird.
Es wird auf ein FAT geschrieben. Ich möchte gerne das die Dateien maximal 2GB groß werden. Dazu habe ich es mal mit split versucht.
Doch erstens werden die Dateien gar nicht gesplittet und zweitens weiß ich auch nicht wie ich das in den Befehl so einbauen soll das die PID richtig geschrieben wird.


PS: Gibt es eine andere Möglichkeit das Signal abzugreifen, ich meine nicht mit cat?
Wahrscheinlich ist das Treiber abhängig.

Danke.

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 14. Sep 2007 14:43

1. Ich bezweifle, dass du aus /dev/video0 mehr als einen Videodatenstrom bekommst. Um sowas abspielen zu können, muss man es in einen passenden Container reinpacken. Umbenennen nach .mpg bringt da nichts.

2. split kann Daten aus der Standardeingabe in gleich große Häppchen teilen. Das geht dann etwa so

Code: Alles auswählen

$ split </dev/video0 -b2047m -d - /TV/aufnahme_vom_$&#40;date "+%d.%m-%R"&#41;.
3. Die PID brauchst du wofür?

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ivtvskript

#3 Beitrag von ivtvskript » 15. Sep 2007 10:28

Die Karte hat einen mpg-decoder. Ich bekomme schon direkt ein mpg-file. Karte: Hauppauge Win-PVR 250.

Ich starte mein kleines Skript über Cron. cat zeichnet zu einer bestimmten Zeit auf und dann beendet sich das Skript, cat läuft im Hintergrund weiter. Zu einer bestimmten Zeit (cron) kann ich anhand der PID die aus dem Textfile ausgelesen wird, cat abschießen (kill).

killall cat will ich nicht anwenden weil es vorkommen kann das cat nochmals verwendet wird.

Code: Alles auswählen

#!/bin/bash
# record
datum=$&#40;date "+%d.%m-%R"&#41;
cat /dev/video0 > /TV/aufnahme_vom_$datum.mpg & echo $! > /TV/killpid.txt

Code: Alles auswählen

#!/bin/bash
killit=$&#40;cat /TV/killpid.txt&#41;
kill $killit

Antworten