View previous topic :: View next topic |
Author |
Message |
Andreas O. Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/Loony Toons/Looney_Toons_-_Speedy.gif)
Joined: 04 Jan 2003 Posts: 132 Location: Welthauptstadt der Biere
|
Posted: Thu Feb 02, 2012 6:36 am Post subject: Aufnahmeskript für pvr-350 funktioniert nun |
|
|
Hallo,
ich hoffe, hier kann mir ein Skript-Kundiger weiterhelfen (ich gestehe, ich kenne mich hier leider fast gar nicht aus).
Ich möchte auf der Kommandozeile einfach von meinem Videorekorder (VHS) von meiner S-Video1-Schnittstelle mit meiner PVR-350-TV-Karte mit einer vorgegebenen Endzeit aufnehmen.
Dazu habe ich im Internet zwei Skripte gefunden, die ich versucht habe, für meinen Zweck zu kombinieren.
Das erste Skript, das schon funktioniert, lautet - ich habe es mal vdr.sh genannt:
Code: | # SHELL SCRIPT FOR VCR-TO-DVD CONVERSION
#!/bin/bash
printf "%s\n" "< VHS copier > "
ivtv-tune -c 1
printf "ENTER to begin recording, ctrl-C to stop"
read ENTER
DATE=`date +%I%M%p`
echo "Recording started at $DATE "
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS_$DATE.mpg |
Nun habe ich die vermeintlich richtigen Stellen eines anderen Skriptes in dieses / in ein neues Skript namens vdr1.sh eingebaut, das nun wie folgt lautet:
Code: | # SHELL SCRIPT FOR VCR-TO-DVD CONVERSION
#!/bin/bash
#auf S-Video umschalten
ivtv-tune -c 1
#eigentlicher Aufnahmebefehl
BEFEHL=cat /dev/video0 > /home/anderl/Desktop/VHS/VHS_$NAME.mpg
echo -n "Name der Aufzeichnung [aufzeichnung]: "
read NAME
# NAME leer (zero) ?
if [ -z $NAME ]; then
NAME="aufzeichnung"
fi
echo -n "Maximale Aufnahmedauer ([[hh:]mm:]ss) [unbegrenzt]: "
read DAUERMAX
if [ $DAUERMAX ]; then
echo "Aufnahmedauer: $DAUERMAX"
BEFEHL="$BEFEHL -endpos $DAUERMAX"
else
echo "Aufnahmedauer: unbegrenzt"
fi
echo "--------------------------------------------------------------"
echo "Fuehre aus: $BEFEHL"
echo "--------------------------------------------------------------"
echo "Die Aufzeichnung kann mit <Strg>-C korrekt beendet werden."
echo "Eingabe-Taste druecken, um mit der Aufzeichnung zu beginnen"
echo "<Strg>-C zum Abbruch"
read x
STARTZEIT=$(date +%Y.%m.%d_%H:%M)
DATEI=$NAME"."$STARTZEIT"."
BEFEHL="$BEFEHL -o $DATEI" |
Dabei kommt leider nur Folgendes raus:
Code: | ./vcr1.sh
/dev/video0: 73.250 MHz
./vcr1.sh: Zeile 6: /dev/video0: Keine Berechtigung
Name der Aufzeichnung [aufzeichnung]:
Maximale Aufnahmedauer ([[hh:]mm:]ss) [unbegrenzt]: 00:01:00
Aufnahmedauer: 00:01:00
--------------------------------------------------------------
Fuehre aus: -endpos 00:01:00
--------------------------------------------------------------
Die Aufzeichnung kann mit <Strg>-C korrekt beendet werden.
Eingabe-Taste druecken, um mit der Aufzeichnung zu beginnen
<Strg>-C zum Abbruch |
es wird leider nichts aufgenommen, weil ich angeblich keine Berechtigung für /dev/video0 hätte - aber in skript vdr.sh habe ich diese doch (als gleicher, einfacher Benutzer) !?
Sicher ist nur eine Kleinigkeit am Skript vdr1.sh falsch, aber was ?
Andreas
Last edited by Andreas O. on Sat Feb 04, 2012 7:52 pm; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Thu Feb 02, 2012 7:20 am Post subject: |
|
|
Probier mal bei dem Befehl ein " " drumherum zu setzen, denn du willst das da noch gar nicht ausführen, sondern nur den späteren Befehl erstellen.
Ein anderes Problem wird aber sein, dass dein Befehl dann so aussieht:
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS_$NAME.mpg -endpos $DAUERMAX -o $NAME"."$STARTZEIT"."
cat wird -endpos und -o nicht kennen.
Auf die Schnelle ginge ein Programm so:
Code: |
#!/bin/bash
# Laufzeit ermitteln
echo -n "Maximale Aufnahmedauer (in Minuten): "
read DAUERMAX
let LAUFZEIT=60*$DAUERMAX
# Starten der Aufnahme
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS_$NAME.mpg &
PID=$!
sleep $LaUFZEIT && kill $(echo $PID)
|
Ich würde allerdings das Verzeichnis nicht hardcoden, sondern als ersten Paramater übergeben. _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Andreas O. Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/Loony Toons/Looney_Toons_-_Speedy.gif)
Joined: 04 Jan 2003 Posts: 132 Location: Welthauptstadt der Biere
|
Posted: Thu Feb 02, 2012 11:22 am Post subject: |
|
|
Hallo,
danke erst mal für die schnelle Antwort
Ich werde mich am WE damit intensiv auseinandersetzen.
Für mich ist einfach ein Programm wie mythtv oder vdr zuviel des Guten, wenn ich einfach nur den MPEG-Strom abgreifen will und einfach nur das Skript nach einer gewissen Aufnahmedauer (z.B. nach 45 Minuten 30 Sekunden) automatisch beendet werden soll.
Andreas
[Edit:] So, habe dein Skript nun weiter modifiziert und als vcr2.sh betitelt:
Code: | #Einfaches Shell-Skript um von VHS (S-Video) aufnehmen zu können
#!/bin/bash
#auf S-Video umschalten
ivtv-tune -c 1
# Laufzeit ermitteln
echo -n "Maximale Aufnahmedauer (in Minuten): "
read DAUERMAX
let LAUFZEIT=60*$DAUERMAX
# Starten der Aufnahme
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS.mpg &
PID=$!
sleep $LAUFZEIT && kill $(echo $PID) |
Was noch nicht gleich funktioniert, ist, dass bei meinem Befehl ivtv-tune -c 1 gleich ein Signal gefunden wird, d.h. es wird erst mal nur "Schnee-Grieseln" aufgenommen, wenn ich das aber separat ausführe, wird ein Signal erkannt:
Code: | ./vcr2.sh
/dev/video0: 73.250 MHz (Signal Detected)
Maximale Aufnahmedauer (in Minuten): 1 |
Kann man hier noch was reinschreiben, dass er z.B. noch 2 Sekunden warten soll, bis die eigentliche Aufnahme beginnen kann?
Ansonsten bin ich mit deinem Skript schon sehr zufrieden
Übrigens - mit:
Code: | v4l2-ctl -d /dev/video0 --list-inputs |
kriegt man raus, auf welchen Kanal man schalten muss.
Andreas |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Andreas O. Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/Loony Toons/Looney_Toons_-_Speedy.gif)
Joined: 04 Jan 2003 Posts: 132 Location: Welthauptstadt der Biere
|
Posted: Sat Feb 04, 2012 7:51 pm Post subject: |
|
|
Setze nun das Thema auf gelöst.
Habe mir in meiner .bashrc ein kleines alias für den Befehl ivtv-tune erstellt, damit kann ich auch ganz gut leben.
Danke nochmal für Deine Hilfe
Andreas |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sun Feb 05, 2012 9:08 am Post subject: |
|
|
Wenn du deinen Beitrag editierst, bekommt man das in der Foren-Übersicht nicht mit.
mit sleep $anzahlDerSekunden kannst du an jeder beliebigen Stelle das Skript kurz anhalten.
Ich würde es direkt vor cat /dev... setzen, dann ist die Usereingabe schon fertig und man kann gehen. _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Andreas O. Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/Loony Toons/Looney_Toons_-_Speedy.gif)
Joined: 04 Jan 2003 Posts: 132 Location: Welthauptstadt der Biere
|
Posted: Sun Feb 05, 2012 3:17 pm Post subject: |
|
|
Finswimmer wrote: |
mit sleep $anzahlDerSekunden kannst du an jeder beliebigen Stelle das Skript kurz anhalten.
Ich würde es direkt vor cat /dev... setzen, dann ist die Usereingabe schon fertig und man kann gehen. |
Wie gesagt, skripten ist noch nicht meine Stärke
ich setze also z.B. den sleep-Befehl hier ein:
Code: | #Einfaches Shell-Skript um von VHS (S-Video) aufnehmen zu können
#!/bin/bash
#auf S-Video umschalten
ivtv-tune -c 1
# Laufzeit ermitteln
echo -n "Maximale Aufnahmedauer (in Minuten): "
read DAUERMAX
let LAUFZEIT=60*$DAUERMAX
sleep $5
# Starten der Aufnahme
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS.mpg &
PID=$!
sleep $LAUFZEIT && kill $(echo $PID) |
Also ist "sleep $5" (für 5 Sekunden anhalten) richtig gesetzt?
Sorry, dass ich so blöde frage, habe nun mal so gut wie keine Ahnung von Syntax.
Andreas |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Finswimmer Bodhisattva
![Bodhisattva Bodhisattva](/images/ranks/rank-bodhisattva.gif)
![](images/avatars/1672586922424daf205ec26.jpg)
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Sun Feb 05, 2012 4:34 pm Post subject: |
|
|
Nee, nicht ganz.
sleep 5 wäre richtig.
Im Zweifelsfall einfach mal sleep --help eingeben, da würdest du den Syntax erklärt bekommen. _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Andreas O. Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/Loony Toons/Looney_Toons_-_Speedy.gif)
Joined: 04 Jan 2003 Posts: 132 Location: Welthauptstadt der Biere
|
Posted: Sun Feb 05, 2012 7:04 pm Post subject: |
|
|
So, habe nun das Skript weiter modifiziert (dazu brauchte es nun doch keinen sleep-Befehl mehr):
Code: | #Einfaches Shell-Skript um von VHS (S-Video) aufnehmen zu können mit der Hauppauge PVR-350
#!/bin/bash
#auf S-Video umschalten
v4l2-ctl --set-input=1
# Laufzeit ermitteln
echo -n "Maximale Aufnahmedauer (in Minuten): "
read DAUERMAX
let LAUFZEIT=60*$DAUERMAX
# Starten der Aufnahme
cat /dev/video0 > /home/anderl/Desktop/VHS/VHS.mpg &
PID=$!
sleep $LAUFZEIT && kill $(echo $PID) |
Dieses habe ich nun vcr genannt (vorher ausführbar gemacht) und nach /usr/local/bin kopiert, so dass ich künftig nur noch
aufzurufen brauche
Vielen Dank nochmal an dieser Stelle an Dich, Finswimmer - ohne dich wäre ich nie soweit gekommen
Andreas |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|