# Aufnahmeskript für pvr-350 funktioniert nun

## Andreas O.

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:

```
# 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:

```
# 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:

```
 ./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 ?

AndreasLast edited by Andreas O. on Sat Feb 04, 2012 7:52 pm; edited 1 time in total

----------

## Finswimmer

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:

```

#!/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.

----------

## Andreas O.

Hallo,

danke erst mal für die schnelle Antwort  :Smile: 

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:

```
#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:

```
 ./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   :Very Happy: 

Übrigens - mit:

```
 v4l2-ctl -d /dev/video0 --list-inputs
```

kriegt man raus, auf welchen Kanal man schalten muss.

Andreas

----------

## Andreas O.

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   :Smile: 

Andreas

----------

## Finswimmer

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.

----------

## Andreas O.

 *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   :Embarassed: 

ich setze also z.B. den sleep-Befehl hier ein:

```
#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

----------

## Finswimmer

Nee, nicht ganz.

sleep 5 wäre richtig.

Im Zweifelsfall einfach mal sleep --help eingeben, da würdest du den Syntax erklärt bekommen.

----------

## Andreas O.

So, habe nun das Skript weiter modifiziert (dazu brauchte es nun doch keinen sleep-Befehl mehr):

```
#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 

```
vcr
```

aufzurufen brauche   :Very Happy: 

Vielen Dank nochmal an dieser Stelle an Dich, Finswimmer - ohne dich wäre ich nie soweit gekommen   :Very Happy:   :Very Happy:   :Very Happy: 

Andreas

----------

