mirror of
https://github.com/rofafor/vdr-plugin-iptv.git
synced 2023-10-10 13:37:03 +02:00
175 lines
7.8 KiB
Plaintext
175 lines
7.8 KiB
Plaintext
This is an IPTV plugin for the Video Disk Recorder (VDR).
|
|
|
|
Written by: Rolf Ahrenberg
|
|
< R o l f . A h r e n b e r g @ s c i . f i >
|
|
|
|
Antti Seppälä
|
|
<a j h s e p p a @ n i k s u l a . h u t . f i >
|
|
|
|
Project's homepage: http://www.saunalahti.fi/~rahrenbe/vdr/iptv/
|
|
|
|
Latest version available at: http://www.saunalahti.fi/~rahrenbe/vdr/iptv/
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License version 2 as
|
|
published by the Free Software Foundation.
|
|
See the file COPYING for more information.
|
|
|
|
Requirements:
|
|
|
|
An IPTV patched VDR setup and DVB compatible MPEG1/2 network video streams.
|
|
|
|
Description:
|
|
|
|
This plugin integrates multicast IPTV transport streams seamlessly into
|
|
VDR. You can use any IPTV channel like any other normal DVB channel for
|
|
live viewing, recording, etc. The plugin also features full section
|
|
filtering capabilities which allow for example EIT information to be
|
|
extracted from the incoming stream.
|
|
|
|
Currently the IPTV plugin has direct support for both multicast UDP/RTP
|
|
and unicast HTTP MPEG1/2 transport streams. Also a file input method is
|
|
supported, but a file delay must be selected individually to prevent
|
|
VDR's transfer buffer over/underflow. Therefore the file input should be
|
|
considered as a testing feature only.
|
|
|
|
IPTV plugin also features a support for external streaming applications.
|
|
With proper helper applications and configuration IPTV plugin is able to
|
|
display not only MPEG1/2 transport streams but also other formats like
|
|
MP3 radio streams, mms video streams and so on.
|
|
|
|
Installation:
|
|
|
|
cd /put/your/path/here/VDR/PLUGINS/src
|
|
tar -xzf /put/your/path/here/vdr-iptv-X.Y.Z.tgz
|
|
ln -s iptv-X.Y.Z iptv
|
|
cd /put/your/path/here/VDR
|
|
patch -p1 < PLUGINS/src/iptv/patches/vdr-X.Y.Z-pluginparam.patch
|
|
cp sources.conf /path/to/vdrconf/
|
|
cp -R PLUGINS/src/iptv/iptv /path/to/vdrconf/plugins/
|
|
make
|
|
make plugins
|
|
./vdr -P iptv
|
|
|
|
Setup menu:
|
|
|
|
- TS buffer size [MB] = 2 Defines ringbuffer size for transport
|
|
stream in MB.
|
|
Valid range: 1...4
|
|
- TS buffer prefill ratio [%] = 0 Defines prefill ratio for transport
|
|
stream ringbuffer before data is
|
|
transferred to VDR.
|
|
Valid range: 0...40
|
|
- EXT protocol base port = 4321 Defines base port used in EXT protocol.
|
|
The port range is defined by the number
|
|
of IPTV devices (max. 8).
|
|
Valid range: 0...65527
|
|
- Use section filtering = 1 Defines whether section filtering shall
|
|
be used.
|
|
Valid range: 0...1
|
|
- Disable filters = 0 Certain section filters might cause some
|
|
unwanted behaviour to VDR such as time
|
|
being falsely synchronized etc. This
|
|
option allows creation of blacklists of
|
|
ill-behaving filters. If this option is
|
|
set to a non-zero value, the menu page
|
|
will contain that many "Disable filter"
|
|
options which allow you to disable the
|
|
individual section filters.
|
|
Valid range: 0...7
|
|
- [Red:Channels] Opens IPTV channel editor.
|
|
- [Blue:Info] Opens IPTV information/statistics menu.
|
|
|
|
Channel editor menu:
|
|
|
|
- Because of the different nature and content the VDR channel editor is not
|
|
best suited for editing of IPTV channels. Therefore an alternative editor
|
|
is provided which allows more IPTV centric editing of channel information.
|
|
An IPTV channel editor is accessible via "Setup -> Plugins -> IPTV" and
|
|
pressing the Red button. The channel editor is functionally similar to
|
|
VDR's built-in channel editor.
|
|
|
|
- Scan Sid: [yes|no] Defines whether service id shall be
|
|
scanned automatically. Service id is
|
|
used in channel identification and
|
|
EPG information is set according to it.
|
|
This option requires section filtering.
|
|
|
|
- Scan pids: [yes|no] Defines whether video and audio pids
|
|
shall be scanned automatically. This
|
|
option is useful with streams missing
|
|
correct PAT/PMT information.
|
|
|
|
Information menu:
|
|
|
|
- [Red:General] Opens the general information page.
|
|
- [Green:Pids] Opens the pid statistics page.
|
|
- [Yellow:Filters] Opens the section filter statistics page.
|
|
- [Blue:Bits/bytes] Toggles between bits and bytes mode.
|
|
|
|
Configuration:
|
|
|
|
- channels.conf
|
|
|
|
TV4;IPTV:4:IPTV|S1P0|EXT|iptvstream.sh|0:P:0:0:680:0:0:4:0:0:0
|
|
TV3;IPTV:3:IPTV|S0P1|FILE|/video/stream.ts|5:P:0:514:670:2321:0:3:0:0:0
|
|
TV2;IPTV:2:IPTV|S0P1|HTTP|127.0.0.1/TS/2|3000:P:0:513:660:2321:0:2:0:0:0
|
|
TV1;IPTV:1:IPTV|S1P0|UDP|127.0.0.1|1234:P:0:512:650:2321:0:1:0:0:0
|
|
^ ^ ^ ^ ^ ^ ^
|
|
| | | | | | Source type ("P")
|
|
| | | | | IP Port Number, File delay (ms), Script parameter
|
|
| | | | IP Address, File location, Script location
|
|
| | | Protocol ("UDP", "HTTP", "FILE", "EXT")
|
|
| | Parameters ("S" Sid scan, "P" Pid scan, "0" disable, "1" enable)
|
|
| Plugin ID ("IPTV")
|
|
Unique enumeration
|
|
|
|
- UDP multicast rules for iptables firewall
|
|
|
|
# Multicast UDP -packets
|
|
iptables -A INPUT -i eth0 -p udp -d 224.0.0.0/4 --dport 1234 -j ACCEPT
|
|
|
|
# IGMP required by multicasts
|
|
iptables -A INPUT -i eth0 -p igmp -d 224.0.0.0/4 -j ACCEPT
|
|
|
|
External streaming:
|
|
|
|
- To watch an externally received channel add an EXT entry to channels.conf
|
|
and specify a script name and parameter. The specified script is executed
|
|
from plugin configuration directory when VDR tunes to the channel. The
|
|
specified script parameter is passed to the script and it can be used to
|
|
select for example between different URLs.
|
|
|
|
- When an EXT channel is opened the IPTV plugin opens an UDP listening port
|
|
on the localhost. The external script is responsible for supplying IPTV
|
|
plugin with MPEG2 TS data in UDP/RTP format to the listening port. The
|
|
data will be processed in VDR like a normal DVB broadcast. The listening
|
|
base port can be specified in the plugin configuration menu.
|
|
|
|
- Each IPTV device has different listen port. The port number is specified
|
|
as a base port number plus IPTV device index minus one. Maximum of 8 IPTV
|
|
devices can be used simultaneously.
|
|
|
|
- IPTV plugin includes an example script which uses VLC media player for
|
|
receiving streams, transcoding and handing the result to IPTV plugin. The
|
|
plugin was tested with VLC version 0.8.6c.
|
|
|
|
Notes:
|
|
|
|
- Working EIT requires correct Nid/Tid/Sid values as the NIT filter cannot
|
|
determine the type (satellite/cable/terrestrial) of the IPTV transport
|
|
stream.
|
|
|
|
- The following section filters are recommended to be disabled:
|
|
"NIT (0x40)", "SDT (0x42)", "TDT (0x70)"
|
|
|
|
- The IPTV devices look for a "/tmp/vdr-iptv<devicenumber>.dvr" fifo at
|
|
startup. If the fifo is found and succesfully opened, the device writes
|
|
the current data stream into it. This can be used for debugging purposes.
|
|
|
|
Acknowledgements:
|
|
|
|
- The IPTV section filtering code is derived from Linux kernel.
|
|
|
|
- The pid scanning code is derived from Udo Richter's streamplayer plugin.
|