Externremux.sh
(→Streamen über schmalbandige Verbindungen) |
|||
Zeile 60: | Zeile 60: | ||
# CONFIG START | # CONFIG START | ||
− | |||
TMP=/tmp/externremux-${RANDOM:-$$} | TMP=/tmp/externremux-${RANDOM:-$$} | ||
# CONFIG END | # CONFIG END | ||
+ | |||
+ | echo "HALLO:$1" >/tmp/t | ||
+ | |||
+ | if [ "$1" == "" ];then | ||
+ | STREAMQUALITY="DSL6000" | ||
+ | else | ||
+ | STREAMQUALITY=$1 | ||
+ | fi | ||
+ | |||
mkdir -p $TMP | mkdir -p $TMP | ||
Zeile 68: | Zeile 76: | ||
(trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) & | (trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) & | ||
− | case | + | case "$STREAMQUALITY" in |
− | DSL1000) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \ | + | "DSL1000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | DSL2000) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \ | + | "DSL2000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | DSL3000) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \ | + | "DSL3000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | DSL3500) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 \ | + | "DSL3500") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | DSL6000) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ | + | "DSL6000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ |
+ | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
+ | "DSL16000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 \ | ||
+ | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 480 \ | ||
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | LAN10) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \ | + | "LAN10") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \ |
-oac mp3lame -lameopts preset=standard \ | -oac mp3lame -lameopts preset=standard \ | ||
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | WLAN11) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \ | + | "WLAN11") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \ |
− | -oac mp3lame -lameopts preset=standard -vf scale | + | -oac mp3lame -lameopts preset=standard -vf scale -zoom -xy 640 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | WLAN54) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \ | + | "WLAN54") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \ |
-oac mp3lame -lameopts preset=standard \ | -oac mp3lame -lameopts preset=standard \ | ||
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | IPAQ) exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ | + | "IPAQ") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ |
− | -oac mp3lame -lameopts preset=15:mode=3 -vf scale | + | -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
− | COPY) exec mencoder -of mpeg -ovc copy -oac copy -mpegopts format=mpeg \ | + | "COPY") exec mencoder -of mpeg -ovc copy -oac copy -mpegopts format=mpeg \ |
-o $TMP/out.avi -- - &>$TMP/out.log ;; | -o $TMP/out.avi -- - &>$TMP/out.log ;; | ||
*) touch $TMP/out.avi ;; | *) touch $TMP/out.avi ;; |
Version vom 20. Mai 2008, 16:43 Uhr
Inhaltsverzeichnis |
Beschreibung
Der HTTP-Server des streamdev-plugins erlaubt es den Datenstrom eines Senders vor dem Versenden zu manipulieren. Um von dieser Möglichkeit Gebrauch zu machen, muss der Stream über folgende Adresse abgerufen werden:
http://vdr-ip-or-host:3000/Extern/1
Die 3000 steht für den im streamdev-plugin Setup eingestellten Port des HTTP-Servers. Die 1 steht für Kanal 1 gemäß der channels.conf.
Das streamdev-plugin ruft dann das Skript externremux.sh. Der Datenstrom des gewählten Senders steht dem Skript über Standard-Eingabe (stdin) zur Verfügung. Der manipulierte Datenstrom muss über Standard-Ausgabe (stdout) an das Plugin zurückgegeben werden.
U.a. kann man MPlayer / VLC media player als Client benutzen.
Konfiguration
Das streamdev-plugin muss installiert und der HTTP-Server des Plugins gestartet sein. Über das OSD ist dies unter dem MenüpunktDie Übergabe an das Plugin lautet wie folgt:
-r $PATH/externremux.sh
bzw.
--remux=$PATH/externremux.sh
Die Datei externremux.sh muss angelegt werden und für den VDR-Benutzer sowohl lesbar als auch ausführbar sein. Auch das Verzeichnis $PATH muss den Zugriff für den VDR-Benutzer zulassen.
Für einen einfachen Test dieser Funktion ohne Umwandlung der Daten genügt folgender Inhalt in der Datei externremux.sh.
#!/bin/sh cat
Beispiele
In der Praxis kommt häufig das Programm MEncoder (Bestandteil von MPlayer) zum Einsatz. Dazu empfiehlt sich eines der folgenden Beispiele:
externremux.sh (1)
#!/bin/sh umask 077 tmpdir=${TMPDIR-/tmp}/externremux-${RANDOM:-$$} FIFO=$tmpdir/out.avi OUTLOG=$tmpdir/out.log mkdir -p $tmpdir || exit 1 mkfifo $FIFO (cat $FIFO; rm -rf $tmpdir) & mencoder <OPTIONEN> -o $FIFO -- - &>$OUTLOG
In die Datei out.log kann man bei Problemen rein schauen. Allerdings wird diese Datei beim Beenden von externremux gelöscht. Um dies zu verhindern, bitte die Zeile "OUTLOG=" folgendermaßen ändern:
OUTLOG=/tmp/out.log
externremux.sh (2)
#!/bin/sh # # externremux.sh # CONFIG START TMP=/tmp/externremux-${RANDOM:-$$} # CONFIG END echo "HALLO:$1" >/tmp/t if [ "$1" == "" ];then STREAMQUALITY="DSL6000" else STREAMQUALITY=$1 fi mkdir -p $TMP mkfifo $TMP/out.avi (trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) & case "$STREAMQUALITY" in "DSL1000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "DSL2000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "DSL3000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "DSL3500") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "DSL6000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "DSL16000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 480 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "LAN10") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \ -oac mp3lame -lameopts preset=standard \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "WLAN11") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \ -oac mp3lame -lameopts preset=standard -vf scale -zoom -xy 640 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "WLAN54") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \ -oac mp3lame -lameopts preset=standard \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "IPAQ") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \ -o $TMP/out.avi -- - &>$TMP/out.log ;; "COPY") exec mencoder -of mpeg -ovc copy -oac copy -mpegopts format=mpeg \ -o $TMP/out.avi -- - &>$TMP/out.log ;; *) touch $TMP/out.avi ;; esac
Distributions-spezifisch
Je nach Distribution wird die Übergabe, an das Plugin unterschiedlich erfolgen.
Mahlzeit ISO4 beta2
Bei der Mahlzeit ISO4 beta2 (und möglicherweise bei anderen Versionen) ist folgende Datei zu erstellen.
Die Streamqualität kann über den Aufruf von selectstreamquality.sh oder über Setzen der STREAMQUALITY-Variablen in /etc/sysconfig eingestellt werden.
Gentoo
Bei gentoo ist es folgende Konfigurations-Datei.
Anwendungsbeispiele
Streamen über schmalbandige Verbindungen
Mit Hilfe des streamdev-plugins und MEncoder kann man das laufende Fernsehprogramm auch über schmalbandige Verbindungen (z. B. DSL-Upload) streamen.
Dazu dient folgender MEncoder-Aufruf (im obigen Besiepiel ergänzen):
mencoder -ovc lavc -ffourcc XVID -oac lavc \ -lavcopts acodec=mp3:abitrate=32:vcodec=mpeg4:vbitrate=100 \ -vf scale -zoom -xy 288 -channels 1 -o $FIFO - &>$OUTLOG
Bei Verwendung eines Routers zum Internet muss der Port 3000 auf den VDR-Server weitergeleitet werden. Zum Testen empfiehlt es sich, erst einmal im lokalen Netz die Funktionsfähigkeit zu überprüfen.
Der Clientrechner muss zudem die Erlaubnis haben, auf den Stream zugreifen zu dürfen. Dies wird in der Datei streamdevhosts.conf eingestellt. Die Zeile
0.0.0.0/0
gibt allen Rechnern im Internet die Erlaubnis, den Stream zu sehen. Diese Einstellung ist mit Vorsicht zu benutzen!