Iptv-plugin
Hulk (Diskussion | Beiträge) (→Beschreibung) |
Hulk (Diskussion | Beiträge) K |
||
Zeile 10: | Zeile 10: | ||
Das Plugin wurde mit [[streamdev-plugin]], {{wikipedia|VLC}} und dem {{wikipedia|IPTV}}-Stream eines Internet-Serviceproviders getestet. | Das Plugin wurde mit [[streamdev-plugin]], {{wikipedia|VLC}} und dem {{wikipedia|IPTV}}-Stream eines Internet-Serviceproviders 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 | + | 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 voraus, 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 nützen, 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. | ||
Zeile 35: | Zeile 35: | ||
<!-- ===Optionen=== --> | <!-- ===Optionen=== --> | ||
===Patches=== | ===Patches=== | ||
− | Für Version 0.0.3 des Plugins braucht man ( | + | Für Version 0.0.3 des Plugins braucht man (zu mindestens bei der [[Debian]]isierung des Plugins) einen [http://www.vdr-portal.de/board/thread.php?postid=664347#post664347 Patch]. |
==Konfiguration== | ==Konfiguration== | ||
Zeile 54: | Zeile 54: | ||
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 Datei <code>iptvstream.sh</code> in das VDR-Konfigurationsverzeichnis 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 in dem [[channels.conf]]-Eintrag den | + | Um nun die jeweiligen Streams aufzurufen, muss man in dem [[channels.conf]]-Eintrag den Skript-Parameter auf 1,2 oder 3 abändern - je nachdem welchen Stream man haben möchte. |
<!-- ===Parameter=== --> | <!-- ===Parameter=== --> | ||
Zeile 70: | Zeile 70: | ||
<pre> | <pre> | ||
#!/bin/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: | + | PARAMETER1="$1" |
+ | PORT="$2" | ||
+ | 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:$PORT}" --intf dummy | ||
</pre> | </pre> | ||
}} | }} | ||
====Internetradio==== | ====Internetradio==== | ||
− | Als Alternative zu VLC kann auch mplayer/ffmpeg | + | Als Alternative zu VLC kann auch mplayer/ffmpeg genutzt werden. |
− | Hier ein Beispiel, um den Stream eines Internetradios im mms://...wma - Format dem Plugin zuzuführen | + | Hier ein Beispiel, um den Stream eines Internetradios im mms://...wma - Format dem Plugin zuzuführen. |
<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 82: | Zeile 84: | ||
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
+ | PARAMETER1="$1" | ||
+ | PORT="$2" | ||
URL="mms://stream ..." | URL="mms://stream ..." | ||
TITLE="internet-radio" | TITLE="internet-radio" | ||
Zeile 103: | Zeile 107: | ||
-title "$TITLE" \ | -title "$TITLE" \ | ||
-f mpegts -acodec mp2 -ac 2 -ab 96k -ar 48000 \ | -f mpegts -acodec mp2 -ac 2 -ab 96k -ar 48000 \ | ||
− | + | "udp://127.0.0.1:${PORT}?pkt_size=16356" | |
rm -f "$FIFO" | rm -f "$FIFO" | ||
Zeile 118: | Zeile 122: | ||
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
+ | PARAMETER1="$1" | ||
+ | PORT="$2" | ||
URL="http://stream ....mp3" | URL="http://stream ....mp3" | ||
TITLE="webcam" | TITLE="webcam" | ||
Zeile 141: | Zeile 147: | ||
-f mpegts -intra -r 24 -vcodec mpeg2video -b 500k -s 352x288 \ | -f mpegts -intra -r 24 -vcodec mpeg2video -b 500k -s 352x288 \ | ||
-acodec mp2 -ac 2 -ab 96k -ar 48000 \ | -acodec mp2 -ac 2 -ab 96k -ar 48000 \ | ||
− | + | "udp://127.0.0.1:${PORT}?pkt_size=16356" | |
rm -f "$FIFO" | rm -f "$FIFO" | ||
} > $LOG 2>&1 | } > $LOG 2>&1 |
Version vom 15. August 2009, 11:28 Uhr
Inhaltsverzeichnis |
Beschreibung
Autor(en): Rolf Ahrenberg, Antti Seppälä
Integriert IPTV-Angebote in den VDR.
Das IPTV-Plugin implementiert eine zusätzliche (virtuelle) Empfangskarte, 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 UTP/RTP-Multicast und HTTP empfangen. Direkte Dateieingabe wird ebenso unterstützt. Mittels Software-Transcoder (ffmpeg bzw. vlc) können beliebige Internet-Streams (also zB WMA, Real Video, ...) wiedergegeben werden - alles, was VLC (Video Lan Player) wiedergeben kann. Das Plugin wurde mit streamdev-plugin, VLC und dem IPTV-Stream eines Internet-Serviceproviders 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 voraus, 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 nützen, 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 (zu mindestens 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 ^ ^ ^ ^ ^ ^ ^ | | | | | | VPid, für Radiostationen muss hier eine Null stehen. | | | | | 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 Skript-Parameter auf 1,2 oder 3 abändern - je nachdem welchen Stream man haben möchte.
Tipps
Fullscreen-Wiedergabe
Um eine Vollbildwiedergabe 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 Full-featured-DVB-Karte 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
#!/bin/sh PARAMETER1="$1" PORT="$2" 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:$PORT}" --intf dummy
Internetradio
Als Alternative zu VLC kann auch mplayer/ffmpeg genutzt werden. Hier ein Beispiel, um den Stream eines Internetradios im mms://...wma - Format dem Plugin zuzuführen.
internetradio;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0
#!/bin/sh PARAMETER1="$1" PORT="$2" 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 \ "udp://127.0.0.1:${PORT}?pkt_size=16356" 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
#!/bin/sh PARAMETER1="$1" PORT="$2" 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 \ "udp://127.0.0.1:${PORT}?pkt_size=16356" 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
#!/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 cd | \ ffmpeg -v -1 \ -f wav \ -probesize 50k \ -i - \ -metadata title="$TITLE" \ -f mpegts -acodec mp2 -ac 2 -ab 128k -ar 48000 \ "udp://127.0.0.1:${PORT}?pkt_size=16356" } > $LOG 2>&1