Powered by Invision Power Board


  
 
Reply to this topicStart new topicStart Poll

> Video data broken stream, Aufnahme beenden ?
MaxHeadroom
Geschrieben am: Montag, 09.November 2015, 10:11 Uhr
Quote Post


Advanced Member
***

Gruppe: G2V3+User
Beiträge: 44
Mitgliedsnummer.: 14762
Mitglied seit: 2010-06-22



Hi,
hab da ein Problem, bei einer Timer Aufnahme wo keine Daten aufgezeichnet werden können (verschlüsselter falsch gewählter Sender) , reagiert der VDR auf nichts mehr.
Notausstieg will ich nicht da möglicherweise eine 2. Aufnahme läuft.
Gibt es da irgendeine Möglichkeit so eine,eh defekte, Aufnahme automatisch beenden zu lassen ?
(Denke da an eine Art wachdog der bei 5-10 sec broken video daten den Timer löscht )

mfg max
Email Poster
Top
HelAu
Geschrieben am: Mittwoch, 11.November 2015, 12:48 Uhr
Quote Post


Scheffe
****

Gruppe: Admin
Beiträge: 11285
Mitgliedsnummer.: 2
Mitglied seit: 2003-04-25



Da müsstest Du einen Watchdog schreiben welcher das Log oder das Videoverzeichnis permanent überwacht, und dann dementsprechend den passenden Timer findet und deaktiviert.
Email PosterUsers WebsiteICQAOLYahoo
Top
MegaV0lt
Geschrieben am: Mittwoch, 11.November 2015, 12:57 Uhr
Quote Post


Professional
****

Gruppe: G2V3+User
Beiträge: 889
Mitgliedsnummer.: 544
Mitglied seit: 2005-06-01



Laufende Aufnahmen und Timer lasse ich in einem Skript so finden:
CODE
# Laufende Aufzeichnungen und Timer
echo -e "\nLaufende Aufnahmen (.rec):" >> $TMPDIR/info.txt
find -L /video -name .rec -type f -print | xargs ls -l >> $TMPDIR/info.txt
echo -e "\nLaufende Timer:" >> $TMPDIR/info.txt
grep "^[5..99]:" /etc/vdr/timers.conf >> $TMPDIR/info.txt

Leider gibt der VDR nicht an, welcher Timer betroffen ist. Es gibt nur eine PID die im Log gesucht werden müsste. Eventuel kann man beim Aufnahmestart diese in das .rec schreiben und dann auswerten. Wie man den Timer dann deaktiviert, weiß icxh leider nicht.

Problem ist nur, wenn mal schlechtes Wetter ist, wird der Timer auch deaktiviert.

Ich würde eher dafür sorgen, dass nicht Sender Programiert werden, die gar nicht aboniert sind. Bei EPGsearch kann man ja Kanalbereiche oder einzelen Sender angeben um das sicherzustellen...

PS: Mit Metalog kann man bei vdsb ein Skript starten:
CODE
VDR :
   program = "vdr"
   logdir = "/var/log/vdr"
   regex    = "ERROR: video data stream broken"
   command = "/usr/local/sbin/vdsb.sh"
   break = 1
das logdir muss existieren
Email PosterUsers WebsiteICQ
Top
MaxHeadroom
Geschrieben am: Donnerstag, 12.November 2015, 20:42 Uhr
Quote Post


Advanced Member
***

Gruppe: G2V3+User
Beiträge: 44
Mitgliedsnummer.: 14762
Mitglied seit: 2010-06-22



So könnte ich alle aktiven Timer finden

CODE
svdrpsend LSTT |cut -c 7- |grep ^9:


So könnte ich Timer disablen wenn ich wüsste wer der Übeltäter ist

CODE
svdrpsend help MODT
220 vdr01 SVDRP VideoDiskRecorder 2.2.0; Thu Nov 12 20:28:00 2015; UTF-8
214-MODT <number> on | off | <settings>
214-    Modify a timer. Settings must be in the same format as returned
214-    by the LSTT command. The special keywords 'on' and 'off' can be
214-    used to easily activate or deactivate a timer.


Obwohl ich noch nicht weiss ob überhaupt svdrpsend reagiert
Email Poster
Top
MegaV0lt
Geschrieben am: Freitag, 13.November 2015, 08:59 Uhr
Quote Post


Professional
****

Gruppe: G2V3+User
Beiträge: 889
Mitgliedsnummer.: 544
Mitglied seit: 2005-06-01



Du müsstest einfach testen, ob die index in den laufenden aufnahmen noch aktualisiert wird. Das kann über die Zugriffszeit oder die Dateigröße passieren. Dann hast Du schon mal das Verzeichnis.

Im Skript dann noch irgendwie dem aktuellen Timer zuweisen und deisen deaktivieren.

Allerdings muss der VDR schon noch reagieren. Ich frage mich, warum das so ist. Bei mir regiert der VDR noch wenn ein VDSB auftritt.
Email PosterUsers WebsiteICQ
Top
MegaV0lt
Geschrieben am: Freitag, 13.November 2015, 11:45 Uhr
Quote Post


Professional
****

Gruppe: G2V3+User
Beiträge: 889
Mitgliedsnummer.: 544
Mitglied seit: 2005-06-01



Ich habe das g2v_rec_msg.sh angepasst, damit der "schöne" Name der Aufzeichnung in das .rec geschrieben wird (Inkl. "@" bei Sofortaufnahme). Das müsste dann mit dem Namen vom Timer übereinstimmen und Du kannst das im Skript verwenden um zu suchen...

g2v_rec_msg.sh

LSTT spuckt ja sowas aus:
CODE
#  svdrpsend LSTT 147
220 hdvdr01 SVDRP VideoDiskRecorder 2.2.0; Fri Nov 13 11:21:06 2015; UTF-8
250 147 1:92:2015-12-02:2005:2110:50:99:Mako - Einfach Meerjungfrau~Verirrte Mondseekräfte / Katzenjammer:<epgsearch><channel>92 - KiKA HD</channel><searchtimer>Mako - Einfach Meerjungfrau</searchtimer><start>1449083100</start><stop>1449087000</stop><s-id>358</s-id><eventid>42931</eventid></epgsearch>
221 hdvdr01 closing connection
Wenn man das in ein Array packt und den : als Trenner verwendet muss man nur moch das 7. Feld suchen und die Timernummer aus dem ersten Feld ableiten (ab 4. Stelle)

Du musst halt mal ein wenig rumprobieren und einen Weg finden, wei due den richtigen Timer findest (z.B. index äler als 20 Sekunden)
Email PosterUsers WebsiteICQ
Top
MegaV0lt
Geschrieben am: Freitag, 13.November 2015, 12:09 Uhr
Quote Post


Professional
****

Gruppe: G2V3+User
Beiträge: 889
Mitgliedsnummer.: 544
Mitglied seit: 2005-06-01



Ich würde da so vorgehen

CODE
# Laufende Timer (LSTT) [Jede Zeile ein Feld]
OLDIFS="$IFS"; IFS=$'\n'
TIMERS=($(svdrpsend LSTT | grep ^9:)); IFS="$OLDIFS"
# Laufende Aufnahmen (.rec) in Array
REC_DIRS=($(find -L /video -name .rec -type f -print))

for rec_dir in ${REC_DIRS[@]}; do
 REC_NAME="$(cat $rec_dir)" # Der Name wie im Timer (Hoffentlich)
 REC_INDEX="${rec_dir%.rec}index" # Index-Datei
 if [ $(stat --format=%Y $REC_INDEX) -le $(( $(date +%s) - 20 )) ]; then
   echo "$REC_INDEX ist älter als 20 Sekunden! Möglicher VDSB!"
   # Timer bestimmen
   if [ "${TIMERS[@]}" =~ "$REC_NAME" ]; then  # Timer in der Liste enthalten!
     for timer in ${TIMERS[@]}; do
       if [ "$timer" =~ "$REC_NAME" ]; then    # Timer gefunden
         OLDIFS="$IFS"; IFS=":"
         VDRTIMER=($timer) # 250 147 1:92:2015-12-02:2005:2110:50:99:Mako - Einfach Meerjungfrau~Verirrte Mondseekräfte / Katzenjammer:<epgsearch><channel>92 - KiKA HD</channel><searchtimer>Mako - Einfach Meerjungfrau</searchtimer><start>1449083100</start><stop>1449087000</stop><s-id>358</s-id><eventid>42931</eventid></epgsearch>
                           # ^0        ^1 ^2         ^3   ^4   ^5 ^6 ^7
         IFS="$OLDIFS"; TIMER_NR="${VDRTIMER[0]:3}" # 250- entfernen
         TIMER_NR="${TIMER_NR% *}"                   # Alles nach der Timernummer entfernen
         echo "Deaktiviere Timer Nummer $TIMER_NR (${VDRTIMER[7]})"
         svdrpsend MODT $TIMER_NR off    # Timer deaktivieren
         break # for Schleife beenden
       fi
     done #timer
   else
     echo "Timer für $REC_NAME nicht gefunden!"
   fi # timerliste
 fi # stat
done

# Optional: Loggen und/oder Mailen!
Komplett ungetestet!
Email PosterUsers WebsiteICQ
Top
MaxHeadroom
Geschrieben am: Dienstag, 24.November 2015, 17:32 Uhr
Quote Post


Advanced Member
***

Gruppe: G2V3+User
Beiträge: 44
Mitgliedsnummer.: 14762
Mitglied seit: 2010-06-22



Warum der VDR nicht mehr auf FB/VDRadmin reagierte weiß ich nicht, möglicherweise weil eine Aufnahme von einem verschlüsselten Kanal vom Suchtimer angelegt worden war ?
Sobald der Timer zu Ende war konnte ich wieder drauf.
Email Poster
Top
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 Anonyme Benutzer)
0 Mitglieder:

Topic Options Reply to this topicStart new topicStart Poll