cat und split

Post Reply
Message
Author
ivtvskript

cat und split

#1 Post by ivtvskript »

Hallo.
Folgendes habe ich in einem Wiki Eintrag entdeckt.

Code: Select all

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.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

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: Select all

$ 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 Post by ivtvskript »

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: Select all

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

Code: Select all

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

Post Reply