Externremux.sh

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Konfiguration: Skript korrigiert/verbessert)
(Verallgemeinert)
Zeile 1: Zeile 1:
== Streamen über schmalbandige Verbindungen ==
+
== Beschreibung ==
  
Mit Hilfe des [[streamdev-plugin]]s und MEncoder kann man das laufende Fernsehprogramm auch über schmalbandige Verbindungen (z.B. DSL upload) streamen.
+
Der HTTP-Server des [[streamdev-plugin|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:
Die Adresse, über welche man den Stream empfängt, lautet dann:
+
 
http://vdr-ip-or-host:3000/Extern/1, wobei die 1 für Kanal 1 gemäß der [[channels.conf]] steht.
+
http://vdr-ip-or-host:3000/Extern/1
Die 3000 muss als Port des http-Server des [[streamdev-plugin]]s ausgewählt und der http-Server des Plugins gestartet sein. Selbstverständlich muss das Plugin installiert und aktiviert sein. Der Aufruf des VDR, den man mit "ps ax|grep vdr" erhält, beinhaltet dann "-P streamdev-server", und man kann die Einstellungen des Plugins über das [[OSD]] ändern: Einstellungen -> Plugins -> streamdev-server.
+
 
Weitere wertvolle Informationen findet man auf der Seite über das [[Streaming]].
+
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.
 +
 
 +
U.a. kann man MPlayer und VLC als Client benutzen.
  
 
== Konfiguration ==
 
== Konfiguration ==
  
In der Datei
+
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.
 +
 
 +
Je nach Distribution und Streamdev-Version kann in der Datei
 
[[Struktur|$VDRCONFIG]]/plugins/plugin.streamdev-server.conf
 
[[Struktur|$VDRCONFIG]]/plugins/plugin.streamdev-server.conf
steht die Zeile:
+
folgender Eintrag notwendig sein:
  
<pre>
+
-r /root/externremux.sh
-r /root/externremux.sh
+
</pre>
+
  
In der Datei /root/externremux.sh wird die Umwandlung des Streams vorgenommen:
+
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.
  
<pre>
+
Für einen einfachen Test dieser Funktion ohne Umwandlung der Daten genügt folgender Inhalt in der Datei externremux.sh
#!/bin/sh
+
 
umask 077
+
#!/bin/sh
tmpdir=${TMPDIR-/tmp}/externremux.$$
+
cat
mkdir $tmpdir || exit 1
+
 
trap "rm -rf $tmpdir; exit" 0 1 2 3 15
+
In der Praxis kommt häufig das Programm mencoder zum Einsatz. Dazu empfiehlt sich folgende Struktur der externremux.sh:
FIFO=$tmpdir/out.avi
+
 
OUTLOG=$tmpdir/out.log
+
#!/bin/sh
/usr/bin/mkfifo $FIFO
+
umask 077
cat $FIFO & \
+
tmpdir=${TMPDIR-/tmp}/externremux.$$
mencoder -ovc lavc -ffourcc XVID -oac lavc \
+
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:
 +
 
 +
OUTLOG=/tmp/out.log
 +
 
 +
== Anwendungsbeispiele ==
 +
 
 +
=== Streamen über schmalbandige Verbindungen ===
 +
 
 +
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):
 +
  mencoder -ovc lavc -ffourcc XVID -oac lavc \
 
   -lavcopts  acodec=mp3:abitrate=32:vcodec=mpeg4:vbitrate=100 \
 
   -lavcopts  acodec=mp3:abitrate=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
</pre>
 
  
In die genannte Datei /tmp/out.log kann man bei Problemen reinschauen.
 
 
Bei Verwendung eines Routers zum Internet muss der Port 3000 auf den VDR-Server weitergeleitet werden.
 
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.
 
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 zuzugreifen. Dies ist in der Datei [[streamdevhosts.conf]] geregelt. Die Zeile
 
Der Clientrechner muss zudem die Erlaubnis haben, auf den Stream zuzugreifen. Dies ist in der Datei [[streamdevhosts.conf]] geregelt. Die Zeile
<pre>
+
0.0.0.0/0
0.0.0.0/0
+
</pre>
+
 
gibt allen Rechnern im Internet die Erlaubnis, den Stream zu sehen. Diese Einstellung ist mit Vorsicht zu benutzen!
 
gibt allen Rechnern im Internet die Erlaubnis, den Stream zu sehen. Diese Einstellung ist mit Vorsicht zu benutzen!
 
== Empfangen des Streams ==
 
 
 
U.a. kann man MPlayer und VLC als Client benutzen:<br/>
 
<pre>
 
mplayer http://vdr-ip-or-host:3000/Extern/1
 
</pre>
 

Version vom 8. Januar 2007, 13:38 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 "/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.

U.a. kann man MPlayer und VLC 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.

Je nach Distribution und Streamdev-Version kann in der Datei $VDRCONFIG/plugins/plugin.streamdev-server.conf folgender Eintrag notwendig sein:

-r /root/externremux.sh

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.

Für einen einfachen Test dieser Funktion ohne Umwandlung der Daten genügt folgender Inhalt in der Datei externremux.sh

#!/bin/sh
cat

In der Praxis kommt häufig das Programm mencoder zum Einsatz. Dazu empfiehlt sich folgende Struktur der 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
/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:

OUTLOG=/tmp/out.log

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 Grundgerüst ersetzen):

 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 zuzugreifen. Dies ist in der Datei streamdevhosts.conf geregelt. 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!