No announcement yet.

IPTV plugin for VDR

  • Filter
  • Time
  • Show
Clear All
new posts

  • IPTV plugin for VDR


    2014-01-10: Version 2.0.1 - Added missing CURL timeouts. - Improved section id scanner. - Added support for cDevice::IsTunedToTransponder() and cDevice::GetCurrentlyTunedTransponder(). - Fixed a memory leak and some issues reported by scan-build.

    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:

    tar -xzf /put/your/path/here/vdr-iptv-X.Y.Z.tgz 
    make -C iptv-X.Y.Z install
    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
    - [Blue:Info] Opens IPTV information/statistics menu.

    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.


    - channels.conf

    TV6;IPTV:60:S=1|P=0|F=EXT||A=0:I:0: 0:680:0:0:6:0:0:0
    TV2;IPTV:20:S=1|P=0|F=UDP|U=|A= 1234:I:0:512:650:2321:0:2:0:0:0
    TV1;IPTV:10:S=1|P=0|F=UDP|U=|A=1234:I:0:5 12:650:2321:0:1:0:0:0
    ^ ^ ^ ^ ^ ^ ^
    | | | | | | Source type ("I")
    | | | | | Stream parameter
    | | | | | UDP: multicast port
    | | | | | CURL: <>
    | | | | | HTTP: HTTP port number
    | | | | | FILE: file delay (ms)
    | | | | | EXT: script parameter
    | | | | Stream address
    | | | | UDP: multicast [source@]group address
    | | | | CURL: HTTP/HTTPS URL; colons (%3A) and pipes (%7C) shall be URL encoded
    | | | | HTTP: URL; missing the scheme name part and possible port declaration
    | | | | FILE: file location
    | | | | EXT: script location
    | | | Stream protocol ("UDP", "CURL", "HTTP", "FILE", "EXT")
    | | Pid scanner ("0" disable, "1" enable)
    | Section id (Sid/Nid/Tid) scanner ("0" disable, "1" enable)
    Unique enumeration

    - UDP multicast rules for iptables firewall

    # Multicast UDP -packets
    iptables -A INPUT -i eth0 -p udp -d --dport 1234 -j ACCEPT

    # IGMP required by multicasts
    iptables -A INPUT -i eth0 -p igmp -d -j ACCEPT

    # Default routing for multicast
    route add -net netmask eth0

    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 resource 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.


    - Working EIT requires correct Nid/Tid/Sid values as the NIT filter cannot
    determine the type (satellite/cable/terrestrial) of the IPTV transport

    - 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.

    - Multiple channels with identical service id should have frequency
    difference of 4 or greater. It's recommended to use frequencies in decades
    (10, 20, 30, 40, ...) for all IPTV channel entries.

    - VLC processes won't get killed on some setups with the provided
    script and the script should be used instead in these

    - If received MPEG-2 TS streams carry CA descriptors, you'll have to apply
    "disable_ca_updates" patch to the VDR in order to get rid of "Channel not
    available" messages.

    - EIT scanning functionality can be disabled for all IPTV channels by applying
    the "disable_eitscan" patch to the VDR.

    - Source address validation can be enabled for UDP protocol separated by
    adding the source address after a ';' character: "U=;"

    - Section id and pid scanners should be disabled after the correct data is
    found. This can be made via VDR's channel editor.

    - Source-specific multicast (SSM) can be enabled by defining both the source
    address and the group address separated by a '@' character. This will use
    IGMP v3 protocol:

    - The CURL implementation supports only HTTP/HTTPS protocols and an optional
    netrc configuration file for authentication:


    - The IPTV section filtering code is derived from Linux kernel.

    - The pid scanning code is derived from Udo Richter's streamplayer plugin.





    Attached Files

    o Not Send Me PM For Support
    2 Do Not Send Me PM For ASK Test.
    3 Ask Your Question On The Forum.

    My Email is :