Iptv-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Line-in der Soundkarte: Angelegt)
(Typographie)
Zeile 2: Zeile 2:
 
'''Autor(en):''' Rolf Ahrenberg, Antti Seppälä
 
'''Autor(en):''' Rolf Ahrenberg, Antti Seppälä
  
'''Integriert IPTV Angebote in den VDR.'''
+
'''Integriert IPTV-Angebote in den VDR.'''
  
Das '''IPTV Plugin''' implementiert ''ein zusätzliches VDR device'' welches die Funktionalität von DVB Karten wie ''Live Wiedergabe, Aufzeichnung, EPG, etc.'' nachbildet.
+
Das '''IPTV-Plugin''' implementiert ein zusätzliches [[VDR-Device]], welches die Funktionalität von [[DVB-Karte]]n wie z.B. Live-Wiedergabe, Aufzeichnung, [[EPG]] etc. nachbildet.
Das Plugin kann '''MPEG transport streams''' über verschiedene
+
Das Plugin kann [[MPEG]]-[[TS|Transportstream]]s über verschiedene
Netzwerk Protokolle wie '''UDP/RTP multicast''' und '''HTTP''' empfangen, '''direkte Dateieingabe''' wird ebenso
+
Netzwerkprotokolle wie [[UDP]]/[[RTP]]-[[Multicast]] und [[HTTP]] empfangen.
unterstützt. Das Plugin wurde mit streamdev-server, VLC und IPTV
+
Direkte Dateieingabe wird ebenso unterstützt.  
stream von einem örtlichen Internet Service Provider getestet.
+
Das Plugin wurde mit [[streamdev-server]], [[VLC]] und dem IPTV-Stream eines Internet-Serviceprovider getestet.
  
Die minimale unterstützte VDR Version ist 1.5.10 es gibt jedoch seit Version 0.0.3 einen Backport für 1.4.7. Das Plugin selbst setzt zudem einen gepatchten VDR vorraus, um so plugin-spezifische Kanäle zur channels.conf hinzufügen zu können. Der Patch wurde absichtlich so allgemein wie möglich gestaltet, um anderen Projekten ebenso zu nutzen, z.B analogtv und pvrinput Plugin.
+
Die minimale unterstützte VDR-Version ist 1.5.10. Es gibt jedoch seit IPTV-Version 0.0.3 einen Backport für VDR 1.4.7. Das Plugin selbst setzt zudem einen gepatchten VDR vorraus, um so plugin-spezifische Kanäle zur [[channels.conf]] hinzufügen zu können. Der Patch wurde absichtlich so allgemein wie möglich gestaltet, um anderen Projekten ebenso zu nutzen, z.B [[Analogtv-plugin|Analogtv]]- und [[Pvrinput-plugin|PVRInput]]-Plugin.
 
Die Autoren hoffen, dass der Patch später in den VDR integriert wird.
 
Die Autoren hoffen, dass der Patch später in den VDR integriert wird.
  
Mehr Details und das Plugin selbst kann man auf der Projekt Homepage finden: [http://www.saunalahti.fi/~rahrenbe/vdr/iptv www.saunalahti.fi/~rahrenbe/vdr/iptv]
+
Mehr Details und das Plugin selbst kann man auf der Projekthomepage finden: [http://www.saunalahti.fi/~rahrenbe/vdr/iptv www.saunalahti.fi/~rahrenbe/vdr/iptv]
  
 
===Status===
 
===Status===
Beta, seit Version 0.0.2 gibt es als zusätzliches Protokoll EXT, mit diesem man beliebige Streams via VLC einbinden kann.  
+
Beta. Seit Version 0.0.2 gibt es als zusätzliches Protokoll ''EXT'', mit diesem man beliebige Streams via [[VLC]] einbinden kann.  
 
+
 
<!--  
 
<!--  
 
==Bilder==
 
==Bilder==
Zeile 25: Zeile 24:
 
|}
 
|}
 
-->
 
-->
 
 
<!-- ==Bedienung== -->
 
<!-- ==Bedienung== -->
 
<!-- ===[[SVDRP]] Befehle=== -->
 
<!-- ===[[SVDRP]] Befehle=== -->
 
 
<!-- ==Hardwareanforderungen== -->
 
<!-- ==Hardwareanforderungen== -->
  
Zeile 38: Zeile 35:
 
<!-- ===Optionen=== -->
 
<!-- ===Optionen=== -->
 
===Patches===
 
===Patches===
Für Version 0.0.3 des Plugins braucht man (zumindestens bei der Debianisierung des Plugins) einen [http://www.vdr-portal.de/board/thread.php?postid=664347#post664347 Patch].
+
Für Version 0.0.3 des Plugins braucht man (zumindestens bei der [[Debian]]isierung des Plugins) einen [http://www.vdr-portal.de/board/thread.php?postid=664347#post664347 Patch].
  
 
==Konfiguration==
 
==Konfiguration==
Zeile 52: Zeile 49:
 
             | Plugin ID ("IPTV")
 
             | Plugin ID ("IPTV")
 
             ID, fortlaufend
 
             ID, fortlaufend
 +
 
===Einstellungen===
 
===Einstellungen===
Um beliebige Streams mittels des Plugins wiederzugeben sollte man das EXT Protokoll nutzen. Benötigt werden dann VLC und w32codecs zur Wiedergabe von WindowsMedia/RealMedia Streams.
+
Um beliebige Streams mittels des Plugins wiederzugeben, sollte man das EXT-Protokoll nutzen. Benötigt werden dann VLC und w32codecs zur Wiedergabe von WindowsMedia/RealMedia Streams.
Dazu verschiebt man die iptvstream.sh Datei in das VDR Konfigurations Verzeichnis und passt die URL Einträge dementsprechend an.
+
Dazu verschiebt man die Datei <code>iptvstream.sh</code> in das VDR-Konfigurationsverzeichnis und passt die URL-Einträge dementsprechend an.
Um nun die jeweiligen Streams aufzurufen muss man im channels.conf Eintrag den Skriptparameter auf 1,2 oder 3 abändern - jenachdem welchen Stream man haben möchte.
+
Um nun die jeweiligen Streams aufzurufen, muss man in dem [[channels.conf]]-Eintrag den Skriptparameter auf 1,2 oder 3 abändern - je nachdem welchen Stream man haben möchte.
 
+
 
+
 
+
  
 
<!-- ===Parameter=== -->
 
<!-- ===Parameter=== -->
 
 
<!-- ==Sonstiges== -->
 
<!-- ==Sonstiges== -->
 
<!-- ===Probleme=== -->
 
<!-- ===Probleme=== -->
 
===Tipps===
 
===Tipps===
====Fullscreen Wiedergabe====
+
====Fullscreen-Wiedergabe====
Um eine Fullscreen Wiedergabe eines Streams auf dem TV zu erhalten, reicht es z. B. die Größe eines 320 x 240 Streams auf 352 x 288 zu vergrößern. Der interne Hardware-Scaler der FF sorgt dann für die Fullscreen-Wiedergabe. Bei größeren Streams ist es natürlich nicht ratsam, diese zu verkleinern sondern auf die nächst höhere Auflösung (480 × 576 bzw. 544 × 576) zu konvertieren.
+
Um eine Vollnbildwiedergabe eines Streams auf dem TV zu erhalten, reicht es z.B. die Größe eines 320 x 240 Streams auf 352 x 288 zu vergrößern. Der interne Hardware-Scaler der [[FF]] sorgt dann für die Fullscreen-Wiedergabe. Bei größeren Streams ist es natürlich nicht ratsam, diese zu verkleinern, sondern auf die nächsthöhere Auflösung (480 × 576 bzw. 544 × 576) zu konvertieren.
  
 
====Prototokoll EXT====
 
====Prototokoll EXT====
Hier ein Beispiel für die Verwendung des Prototokoll EXT. Die Datei vlcstream.sh im Verzeichnis der iptv plugin Konfiguration speichern. Und die channels.conf des VDR um den folgenden Eintrag erweitern.
+
Hier ein Beispiel für die Verwendung des Prototokolls EXT. Die Datei <code>vlcstream.sh</code> im Verzeichnis der iptv-Plugin-Konfiguration speichern. Und die channels.conf des VDR um den folgenden Eintrag erweitern:
 
<pre>VLC-channel;IPTV:1:IPTV|EXT|vlcstream.sh|1:P:0:1:2:0:0:1:0:0:0</pre>
 
<pre>VLC-channel;IPTV:1:IPTV|EXT|vlcstream.sh|1:P:0:1:2:0:0:1:0:0:0</pre>
  
Zeile 81: Zeile 75:
  
 
====Internetradio====
 
====Internetradio====
Als Alternative zu VLC kann auch unter Verwendung von mplayer/ffmpeg/nc genutzt werden.
+
Als Alternative zu VLC kann auch mplayer/ffmpeg/nc genutzt werden.
Hier ein Beispiel um einen Stream eines Internetradio im mms://...wma dem Plugin zuzuführen.
+
Hier ein Beispiel um den Stream eines Internetradios im mms://...wma - Format dem Plugin zuzuführen. Für das UDP-Stream wird das Tool netcat (nc) verwendet.
Für das UDP-Stream wird das Tool netcat (nc) verwendet.
+
  
 
<pre>internetradio;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0</pre>
 
<pre>internetradio;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0</pre>
Zeile 118: Zeile 111:
  
 
====Internetradio mit Bildanzeige (Webcam)====
 
====Internetradio mit Bildanzeige (Webcam)====
ffmpeg kann auch beim Encodieren des Internetradio zum MPEG-Transportstream einen zusätzlichen Video-Stream aus JPEG Bildern erzeugen. Gemäß dem folgenden Beispiel wird die Datei "bild.jpg" im Intervall von zwei Sekundenl im Stream aktualisiert.
+
ffmpeg kann beim Encodieren des Internetradiostreams zum MPEG-Transportstream einen zusätzlichen Video-Stream aus JPEG-Bildern erzeugen. Gemäß dem folgenden Beispiel wird die Datei "bild.jpg" im Intervall von zwei Sekunden im Stream aktualisiert.
Damit bietet sich die Verwendung als zur Anzeige von Bildern einer Webcam an, die z.B. ihre Bilder per cron-Daemon aktualisiert.
+
Damit bietet sich die Verwendung zur Anzeige von Bildern einer Webcam an, die z.B. ihre Bilder per [[cron]]-Daemon aktualisiert.
  
 
<pre>webcam;IPTV:3:IPTV|EXT|webcam.sh|0:P:0:256:257:0:0:3:0:0:0</pre>
 
<pre>webcam;IPTV:3:IPTV|EXT|webcam.sh|0:P:0:256:257:0:0:3:0:0:0</pre>
Zeile 156: Zeile 149:
  
 
====Line-in der Soundkarte====
 
====Line-in der Soundkarte====
 +
Ebenso kann man den Eingang "Line-in" einer Soundkarte einbinden:
 
<pre>linein;IPTV:5:IPTV|S0P0|EXT|linein.sh|0:P:27500:0:256:0:0:5:5:5:0</pre>
 
<pre>linein;IPTV:5:IPTV|S0P0|EXT|linein.sh|0:P:27500:0:256:0:0:5:5:5:0</pre>
 
{{Box Datei |linein.sh|
 
{{Box Datei |linein.sh|
Zeile 182: Zeile 176:
 
</pre>
 
</pre>
 
}}
 
}}
 
 
  
 
<!-- ===Wunschliste=== -->
 
<!-- ===Wunschliste=== -->
 
<!-- ===Snapshot=== -->
 
<!-- ===Snapshot=== -->
 
 
==Links==
 
==Links==
 
# [http://www.saunalahti.fi/~rahrenbe/vdr/iptv/ Homepage des Plugins]
 
# [http://www.saunalahti.fi/~rahrenbe/vdr/iptv/ Homepage des Plugins]

Version vom 15. April 2008, 21:07 Uhr

Inhaltsverzeichnis

Beschreibung

Autor(en): Rolf Ahrenberg, Antti Seppälä

Integriert IPTV-Angebote in den VDR.

Das IPTV-Plugin implementiert ein zusätzliches VDR-Device, welches die Funktionalität von DVB-Karten wie z.B. Live-Wiedergabe, Aufzeichnung, EPG etc. nachbildet. Das Plugin kann MPEG-Transportstreams über verschiedene Netzwerkprotokolle wie UDP/RTP-Multicast und HTTP empfangen. Direkte Dateieingabe wird ebenso unterstützt. Das Plugin wurde mit streamdev-server, VLC und dem IPTV-Stream eines Internet-Serviceprovider getestet.

Die minimale unterstützte VDR-Version ist 1.5.10. Es gibt jedoch seit IPTV-Version 0.0.3 einen Backport für VDR 1.4.7. Das Plugin selbst setzt zudem einen gepatchten VDR vorraus, um so plugin-spezifische Kanäle zur channels.conf hinzufügen zu können. Der Patch wurde absichtlich so allgemein wie möglich gestaltet, um anderen Projekten ebenso zu nutzen, z.B Analogtv- und PVRInput-Plugin. Die Autoren hoffen, dass der Patch später in den VDR integriert wird.

Mehr Details und das Plugin selbst kann man auf der Projekthomepage finden: www.saunalahti.fi/~rahrenbe/vdr/iptv

Status

Beta. Seit Version 0.0.2 gibt es als zusätzliches Protokoll EXT, mit diesem man beliebige Streams via VLC einbinden kann.

Softwareanforderungen

  • vdr >=1.5.10 (gepatcht, ein Patch)
  • vdr =1.4.7 (gepatcht, zwei Patches)

Patches

Für Version 0.0.3 des Plugins braucht man (zumindestens bei der Debianisierung des Plugins) einen Patch.

Konfiguration

 Name;IPTV:1:IPTV|UDP|127.0.0.1|1234:P:0:512:650:2321:0:1:0:0:0
 Name;IPTV:2:IPTV|HTTP|127.0.0.1/TS/2|3000:P:0:513:660:2321:0:2:0:0:0
 Name;IPTV:3:IPTV|FILE|/video/stream.ts|5:P:0:514:670:2321:0:3:0:0:0
 Name;IPTV:4:IPTV|EXT|iptvstream.sh|0:P:0:0:680:0:0:4:0:0:0
           ^ ^    ^   ^             ^ ^
           | |    |   |             | Source type ("P")
           | |    |   |             IP Port, File delay (ms), Skript parameter
           | |    |   IP Addresse, Pfadangabe zu Datei und/oder Skript 
           | |    Protokoll ("UDP", "HTTP", "FILE", "EXT")
           | Plugin ID ("IPTV")
           ID, fortlaufend

Einstellungen

Um beliebige Streams mittels des Plugins wiederzugeben, sollte man das EXT-Protokoll nutzen. Benötigt werden dann VLC und w32codecs zur Wiedergabe von WindowsMedia/RealMedia Streams. Dazu verschiebt man die Datei iptvstream.sh in das VDR-Konfigurationsverzeichnis und passt die URL-Einträge dementsprechend an. Um nun die jeweiligen Streams aufzurufen, muss man in dem channels.conf-Eintrag den Skriptparameter auf 1,2 oder 3 abändern - je nachdem welchen Stream man haben möchte.

Tipps

Fullscreen-Wiedergabe

Um eine Vollnbildwiedergabe eines Streams auf dem TV zu erhalten, reicht es z.B. die Größe eines 320 x 240 Streams auf 352 x 288 zu vergrößern. Der interne Hardware-Scaler der FF sorgt dann für die Fullscreen-Wiedergabe. Bei größeren Streams ist es natürlich nicht ratsam, diese zu verkleinern, sondern auf die nächsthöhere Auflösung (480 × 576 bzw. 544 × 576) zu konvertieren.

Prototokoll EXT

Hier ein Beispiel für die Verwendung des Prototokolls EXT. Die Datei vlcstream.sh im Verzeichnis der iptv-Plugin-Konfiguration speichern. Und die channels.conf des VDR um den folgenden Eintrag erweitern:

VLC-channel;IPTV:1:IPTV|EXT|vlcstream.sh|1:P:0:1:2:0:0:1:0:0:0
Datei
vlcstream.sh
#!/bin/sh
exec vlc "mms://livemedia.omroep.nl/vprohollanddoc-bb" --sout "#transcode{vcodec=mp2v,acodec=mpga,vb=2400,ab=320}:standard{access=udp,mux=ts{pid-video=1,pid-audio=2,pid-spu=3},dst=127.0.0.1:4321}" --intf dummy



Internetradio

Als Alternative zu VLC kann auch mplayer/ffmpeg/nc genutzt werden. Hier ein Beispiel um den Stream eines Internetradios im mms://...wma - Format dem Plugin zuzuführen. Für das UDP-Stream wird das Tool netcat (nc) verwendet.

internetradio;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0
Datei
internetradio.sh
#!/bin/sh
URL="mms://stream ..."
TITLE="internet-radio"

FIFO=/tmp/radio.wma
LOG=/dev/null

{
rm -f "$FIFO"
mkfifo "$FIFO"
mplayer -dumpstream "$URL" \
-quiet -nolirc -noautosub -noconsolecontrols -novideo -nojoystick \
-dumpfile "$FIFO" &
# Time to connect and fill pipe
sleep 3 

# Build audio only stream
# PID 0x100/256 = Audio
ffmpeg -v -1 \
-i "$FIFO" \
-title "$TITLE" \
-f mpegts -acodec mp2 -ac 2 -ab 96k -ar 48000 \
 - | nc -u 127.0.0.1 4321

rm -f "$FIFO"
} > $LOG 2>&1


Internetradio mit Bildanzeige (Webcam)

ffmpeg kann beim Encodieren des Internetradiostreams zum MPEG-Transportstream einen zusätzlichen Video-Stream aus JPEG-Bildern erzeugen. Gemäß dem folgenden Beispiel wird die Datei "bild.jpg" im Intervall von zwei Sekunden im Stream aktualisiert. Damit bietet sich die Verwendung zur Anzeige von Bildern einer Webcam an, die z.B. ihre Bilder per cron-Daemon aktualisiert.

webcam;IPTV:3:IPTV|EXT|webcam.sh|0:P:0:256:257:0:0:3:0:0:0
Datei
webcam.sh
#!/bin/sh
URL="http://stream ....mp3"
TITLE="webcam"
IMAGE="bild.jpg"

FIFO=/tmp/web.mp3
LOG=/dev/null

{
rm -f "$FIFO"
mkfifo "$FIFO"
mplayer -dumpstream "$URL" \
-quiet -nolirc -noautosub -noconsolecontrols -novideo -nojoystick \
-dumpfile "$FIFO" &
# Time to connect and fill pipe
sleep 3 

# Build stream from audiodump with cycle image as video (e.g. webcam)
# PID 0x100/256 = Video 0x101/257 = Audio
ffmpeg -v -1 \
 -i "$FIFO" -r 0.5 -loop_input -i '$IMAGE' \
 -title "$TITLE" \
 -f mpegts -intra -r 24 -vcodec mpeg2video -b 500k -s 352x288 \
 -acodec mp2 -ac 2 -ab 96k -ar 48000 \
  - | nc -u 127.0.0.1 4321
rm -f "$FIFO"
} > $LOG 2>&1



Line-in der Soundkarte

Ebenso kann man den Eingang "Line-in" einer Soundkarte einbinden:

linein;IPTV:5:IPTV|S0P0|EXT|linein.sh|0:P:27500:0:256:0:0:5:5:5:0
Datei
linein.sh
#!/bin/sh
PARAMETER1="$1"
PORT="$2"
TITLE="linein"

if test -z "$PORT"; then
    PORT="4321"
fi

LOG=/dev/null
{
# PID 0x100/256 = Audio
arecord -q -D hw:0,0 -f dat | \
ffmpeg -v -1 \
-f wav \
-i - \
-title "$TITLE" \
-f mpegts -acodec mp2 -ac 2 -ab 128k -ar 48000 \
 - | nc -nu 127.0.0.1 $PORT

} > $LOG 2>&1


Links

  1. Homepage des Plugins
In anderen Sprachen