Hallo,
ich würde gern einen Radiostream auf dem VDR anhören. Dies klappt mit dem IPTV-Plugin leider nur recht schlecht und dort gibt es ebenfalls Probleme mit dem Beenden der Prozesse im Zusammenhang mit dem EPG-Hintergrundscan.
Derzeit teste ich folgende Lösung, die rein vom Abspielen einwandfrei funktioniert:
Externalplayer-Plugin mit dem Mplayer in folgender Konfiguration:
externalplayer.conf
MenuEntry = "Radio RSA";
Command = "/etc/vdr/plugins/externalplayer/radio-rsa.sh";
OutputMode = extern;
InputMode = slave;
BlockMenu = true; # This makes sense, beause an invisible main menu would block all the keys.
vdrKeyUp = specialKeyPageUp; # See below for a full list of "special keys."
vdrKeyDown = specialKeyPageDown;
vdrKeyLeft = specialKeyLeft;
vdrKeyRight = specialKeyRight;
vdrKeyOk = noKey;
vdrKeyBack = "q";
...
Alles anzeigen
radio-rsa.sh:
#!/bin/bash
OPT="-prefer-ipv4 -ao alsa:device=hdmi -vo xv -autosync 2 "
cache="190"
token=`wget -q -O - http://edge.download.newmedia.nacamar.net/sltokens/stream-radio-player.php?stream=rsa-sachsen/livestream.wma | grep 'var token'|cut -d'"' -f2|head -1`
stream="mms://62.26.161.89/rsa-sachsen\$livestream.wma?token=$token"
mplayer $OPT -cache $cache $stream
Nun zum Problem:
Wird der Mplayer per FB über den Slavemodus beendet, klappt alles einwandfrei. Gerne hätte ich jedoch die obige Option: BlockMenu in externalplayer.conf deaktiviert, so dass man das VDR-Menü aufrufen kann und auf "Wiedergabe beenden" gehen kann.
Sofern ich jedoch die Wiedergabe per VDR-Menü beende, passiert folgendes:
radio-rsa.sh wird beendet, der mplayer läuft jedoch mit 2 Prozessen (1 Vater, 1 Kind) weiter und in diesem Moment läuft durch das Beenden der VDR parallel mit.
Wieso wird der mplayer als Kindprozess von radio-rsa.sh nicht mit beendet? Jegliche Versuche mit traps in radio-rsa.sh funktionieren einfach nicht (werden erst gar nicht ausgeführt).
Wenn ich den mplayer in radio-rsa.sh mit exec aufrufe, wird beim Start das Skript radio-rsa.sh beendet und der mplayer bekommt die PID des beendeten Skriptes. Beende ich hierbei nun die Wiedergabe über das VDR-Menü, beendet sich der mplayer - zurück bleiben jedoch Zombieprozesse des mplayer - dies wäre eine mögliche vorläufige Lösung, jedoch sind die Zombieprozesse irgendwie unschön.
Igrendwelche Tipps von Skriptprofis?
Danke & Gruss
Marcus