Iptv-plugin
(→Patches) |
Hulk (Diskussion | Beiträge) (Internetradio) |
||
Zeile 76: | Zeile 76: | ||
#!/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:4321}" --intf dummy | 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 | ||
+ | </pre> | ||
+ | }} | ||
+ | |||
+ | |||
+ | ====Internetradio==== | ||
+ | Als Alternative zu VLC kann auch unter Verwendung von mplayer/ffmpeg/nc verwendet werden. | ||
+ | Hier ein Beispiel um einen Stream eines Internetradio im mms://...wma dem Plugin zuzuführen. | ||
+ | Für das UDP-Stream wird das Tool netcat (nc) verwendet. | ||
+ | |||
+ | <pre>IPStream;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0</pre> | ||
+ | {{Box Datei |internetradio.sh| | ||
+ | <pre> | ||
+ | #!/bin/sh | ||
+ | URL="mms://stream ..." | ||
+ | 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" \ | ||
+ | -f mpegts -acodec mp2 -ac 2 -ab 96k -ar 48000 \ | ||
+ | - | nc -u 127.0.0.1 4321 | ||
+ | |||
+ | rm -f "$FIFO" | ||
+ | } > $LOG 2>&1 | ||
+ | </pre> | ||
+ | }} | ||
+ | |||
+ | ====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. | ||
+ | Damit bietet sich die Verwendung als 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> | ||
+ | {{Box Datei |webcam.sh| | ||
+ | <pre> | ||
+ | #!/bin/sh | ||
+ | URL="http://stream ....mp3" | ||
+ | FIFO=/tmp/web.mp3 | ||
+ | IMAGE="bild.jpg" | ||
+ | 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' \ | ||
+ | -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 | ||
</pre> | </pre> | ||
}} | }} |
Version vom 30. März 2008, 13:46 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 Live Wiedergabe, Aufzeichnung, EPG, etc. nachbildet. Das Plugin kann MPEG transport streams über verschiedene Netzwerk Protokolle wie UDP/RTP multicast und HTTP empfangen, direkte Dateieingabe wird ebenso unterstützt. Das Plugin wurde mit streamdev-server, VLC und IPTV stream von einem örtlichen Internet Service Provider 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 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: 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 iptvstream.sh Datei in das VDR Konfigurations Verzeichnis 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.
Tipps
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.
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.
VLC-channel;IPTV:1:IPTV|EXT|vlcstream.sh|1:P:0:1:2:0:0:1:0:0:0
#!/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 unter Verwendung von mplayer/ffmpeg/nc verwendet werden. Hier ein Beispiel um einen Stream eines Internetradio im mms://...wma dem Plugin zuzuführen. Für das UDP-Stream wird das Tool netcat (nc) verwendet.
IPStream;IPTV:2:IPTV|EXT|internetradio.sh|0:P:0:0:256:0:0:2:0:0:0
#!/bin/sh URL="mms://stream ..." 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" \ -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 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. Damit bietet sich die Verwendung als 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 URL="http://stream ....mp3" FIFO=/tmp/web.mp3 IMAGE="bild.jpg" 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' \ -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