1
0
mirror of https://github.com/rofafor/vdr-plugin-iptv.git synced 2023-10-10 13:37:03 +02:00
vdr-plugin-iptv/README

162 lines
6.9 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-1.5.10 (or later) 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 supports 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.
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
- Scan Sid automatically = 1 Defines whether service id shall be
scanned automatically. Requires section
filtering.
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.
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|EXT|iptvstream.sh|0:P:0:0:680:0:0:4:0:0:0
TV3;IPTV:3:IPTV|FILE|/video/stream.ts|5:P:0:514:670:2321:0:3:0:0:0
TV2;IPTV:2:IPTV|HTTP|127.0.0.1/TS/2|3000:P:0:513:660:2321:0:2:0:0:0
TV1;IPTV:1:IPTV|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")
| 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:
- Starting from version 0.0.2 IPTV plugin features a support for external
streaming applications. With proper helper applications and configuration
the IPTV plugin is now able to display not only MPEG1/2 transport streams
but also other formats like MP3 radio streams.
- 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 is having a different listen port. The port number is
specified as a base port number plus IPTV device index minus one. Maximum
8 IPTV devices can be used.
- 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)"
Acknowledgements:
- The IPTV section filtering code is derived from Linux kernel.