Externremux.sh

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Konfiguration)
K (cleanup)
Zeile 7: Zeile 7:
 
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]].
 
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 "/root/externremux.sh" auf. 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.
+
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 und VLC als Client benutzen.
+
U.a. kann man {{wikipedia|MPlayer}} /  {{wikipedia|VLC media player}} als Client benutzen.
  
 
== Konfiguration ==
 
== Konfiguration ==
  
Das [[streamdev-plugin]] muss installiert und der HTTP-Server des Plugins gestartet sein. Über das [[OSD]] ist dies unter dem Menüpunkt Einstellungen -> Plugins -> streamdev-server möglich.
+
Das [[streamdev-plugin]] muss installiert und der HTTP-Server des Plugins gestartet sein. Über das [[OSD]] ist dies unter dem Menüpunkt {{Navigation|Einstellungen}} -> {{Navigation|Plugins}} -> {{Navigation|streamdev-server}} möglich.
  
Je nach Distribution und Streamdev-Version kann in der Datei
+
Die Übergabe, an das Plugin lautet wie folgt:
[[Struktur|$VDRCONFIG]]/plugins/plugin.streamdev-server.conf
+
folgender Eintrag notwendig sein:
+
  
  -r /root/externremux.sh
+
  -r $PATH/externremux.sh
 +
bzw.
 +
--remux=$PATH/externremux.sh
  
Bei der Mahlzeit ISO4 beta2 (und möglicherweise bei anderen Versionen) so vorgehen:
+
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.
  
1. in /etc/vdr/plugins ein Verzeichnis streamdev-server erstellen
+
Für einen einfachen Test dieser Funktion ohne Umwandlung der Daten genügt folgender Inhalt in der Datei '''externremux.sh'''.
  
2. in diesem Verzeichnis die Datei plugin.conf erstellen mit dem Inhalt
+
#!/bin/sh
 +
cat
  
PARA="--remux=/root/externremux.sh"
+
=== Beispiele ===
  
Die Streamqualität kann über den Aufruf von selectstreamquality.sh oder über Setzen der STREAMQUALITY-Variablen in /etc/sysconfig eingestellt werden.
+
In der Praxis kommt häufig das Programm MEncoder (Bestandteil von {{wikipedia|MPlayer}}) zum Einsatz. Dazu empfiehlt sich eines der folgenden Beispiele.
  
 +
=== externremux.sh (1) ===
  
Bei gentoo gehört in die Datei "/etc/conf.d/vdr.streamdev-server" die Zeile _EXTRAOPTS="--remux=/home/vdr/externremux.sh".
+
{{Box Datei|$PATH/externremux.sh|
 +
<pre>
 +
#!/bin/sh
 +
umask 077
 +
tmpdir=${TMPDIR-/tmp}/externremux.$$
 +
FIFO=$tmpdir/out.avi
 +
OUTLOG=$tmpdir/out.log
 +
mkdir $tmpdir || exit 1
 +
trap "rm -rf $tmpdir; exit" 0 1 2 3 15
 +
mkfifo $FIFO
 +
cat $FIFO & \
 +
mencoder <OPTIONEN> -o $FIFO - &>$OUTLOG
 +
</pre>
 +
}}
  
Die Datei /root/externremux.sh muss angelegt werden und für den VDR-Benutzer sowohl lesbar als auch ausführbar sein. Auch das Verzeichnis /root muss den Zugriff für den VDR-Benutzer zulassen.
+
In die Datei out.log kann man bei Problemen reinschauen. Allerdings wird diese Datei beim Beenden von externremux gelöscht. Um dies zu verhindern, bitte die Zeile "OUTLOG=" folgendermaßen ändern:
  
Für einen einfachen Test dieser Funktion ohne Umwandlung der Daten genügt folgender Inhalt in der Datei externremux.sh:
+
OUTLOG=/tmp/out.log
  
#!/bin/sh
+
=== externremux.sh (2) ===
cat
+
{{Box Datei|$PATH/externremux.sh|
 +
<pre>
 +
#!/bin/sh
 +
#
 +
# externremux.sh
  
In der Praxis kommt häufig das Programm MEncoder zum Einsatz. Dazu empfiehlt sich folgende Struktur der externremux.sh:
+
# CONFIG START
 +
  STREAMQUALITY="DSL6000" # DSL{1000,2000,3000,6000}, LAN10, WLAN{11,54}, IPAQ
 +
  TMP="/tmp/$RANDOM"
 +
# CONFIG END
  
#!/bin/sh
+
mkdir -p $TMP
umask 077
+
mkfifo $TMP/out.avi
tmpdir=${TMPDIR-/tmp}/externremux.$$
+
cat $TMP/out.avi &
FIFO=$tmpdir/out.avi
+
OUTLOG=$tmpdir/out.log
+
mkdir $tmpdir || exit 1
+
trap "rm -rf $tmpdir; exit" 0 1 2 3 15
+
/usr/bin/mkfifo $FIFO
+
cat $FIFO & \
+
mencoder <OPTIONEN> -o $FIFO - &>$OUTLOG
+
  
In die Datei out.log kann man bei Problemen reinschauen. Allerdings wird diese Datei beim Beenden von externremux gelöscht. Um dies zu verhindern, bitte die Zeile "OUTLOG=" folgendermaßen ändern:
+
case $STREAMQUALITY in
 +
    DSL1000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \
 +
-oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
    DSL2000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \
 +
-oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
    DSL3000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \
 +
-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
    DSL6000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
 +
-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
      LAN10) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \
 +
-oac mp3lame -lameopts preset=standard \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
      WLAN11) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \
 +
-oac mp3lame -lameopts preset=standard -vf scale=640:408 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
      WLAN54) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \
 +
-oac mp3lame -lameopts preset=standard \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
IPAQ) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
 +
-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
 +
-o $TMP/out.avi -- - &>$TMP/out.log ;;
 +
  *) : ;;
 +
esac
  
OUTLOG=/tmp/out.log
+
rm -rf $TMP
 +
</pre>
 +
}}
 +
 
 +
=== 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.
 +
 
 +
{{Box Datei|/etc/vdr/plugin/streamdev-servers/plugin.conf|
 +
<pre>
 +
PARA="--remux=/root/externremux.sh"
 +
</pre>
 +
}}
 +
 
 +
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.
 +
 
 +
{{Box Datei|/etc/conf.d/vdr.streamdev-server|
 +
<pre>
 +
_EXTRAOPTS="--remux=/home/vdr/externremux.sh"
 +
</pre>
 +
}}
  
 
== Anwendungsbeispiele ==
 
== Anwendungsbeispiele ==
Zeile 64: Zeile 132:
 
Mit Hilfe des [[streamdev-plugin|streamdev-plugins]] und MEncoder kann man das laufende Fernsehprogramm auch über schmalbandige Verbindungen (z. B. DSL-Upload) streamen.
 
Mit Hilfe des [[streamdev-plugin|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 Grundgerüst ersetzen):
+
Dazu dient folgender MEncoder-Aufruf (im obigen Besiepiel ergänzen):
 
   mencoder -ovc lavc -ffourcc XVID -oac lavc \
 
   mencoder -ovc lavc -ffourcc XVID -oac lavc \
   -lavcopts  acodec=mp3:abitrate=32:vcodec=mpeg4:vbitrate=100 \
+
   -lavcopts  acodec=mp3:arbitrate=32:vcodec=mpeg4:vbitrate=100 \
 
   -vf scale -zoom -xy 288 -channels 1 -o $FIFO - &>$OUTLOG
 
   -vf scale -zoom -xy 288 -channels 1 -o $FIFO - &>$OUTLOG
  

Version vom 5. November 2007, 05:51 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üpunkt
Einstellungen
->
Plugins
->
streamdev-server
möglich.

Die Ü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)

Datei
$PATH/externremux.sh
#!/bin/sh
umask 077
tmpdir=${TMPDIR-/tmp}/externremux.$$
FIFO=$tmpdir/out.avi
OUTLOG=$tmpdir/out.log
mkdir $tmpdir || exit 1
trap "rm -rf $tmpdir; exit" 0 1 2 3 15
mkfifo $FIFO
cat $FIFO & \
mencoder <OPTIONEN> -o $FIFO - &>$OUTLOG


In die Datei out.log kann man bei Problemen reinschauen. 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)

Datei
$PATH/externremux.sh
#!/bin/sh
#
# externremux.sh

# CONFIG START
  STREAMQUALITY="DSL6000" # DSL{1000,2000,3000,6000}, LAN10, WLAN{11,54}, IPAQ
  TMP="/tmp/$RANDOM"
# CONFIG END

mkdir -p $TMP
mkfifo $TMP/out.avi
cat $TMP/out.avi &

case $STREAMQUALITY in
     DSL1000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     DSL2000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     DSL3000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
     DSL6000) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
       LAN10) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \
		-oac mp3lame -lameopts preset=standard \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
      WLAN11) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \
		-oac mp3lame -lameopts preset=standard -vf scale=640:408 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
      WLAN54) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \
		-oac mp3lame -lameopts preset=standard \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
	IPAQ) mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
		-oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \
		-o $TMP/out.avi -- - &>$TMP/out.log ;;
	   *) : ;;
esac

rm -rf $TMP


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.

Datei
/etc/vdr/plugin/streamdev-servers/plugin.conf
PARA="--remux=/root/externremux.sh"


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.

Datei
/etc/conf.d/vdr.streamdev-server
_EXTRAOPTS="--remux=/home/vdr/externremux.sh"


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:arbitrate=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!