GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - xplus2/dvbipitools: DVB-IPI tools. Build your own IPTV infrastructure.

BranchesTags
Open more actions menu

Latest commit

 

History

252 Commits
252 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
debian
debian
 
 
doc
doc
 
 
ipk
ipk
 
 
src
src
 
 
tests
tests
 
 
toolchain
toolchain
 
 
.gitignore
.gitignore
 
 
.vimrc
.vimrc
 
 
CMakeLists.txt
CMakeLists.txt
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
NOTICE
NOTICE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
THIRD_PARTY_LICENSES
THIRD_PARTY_LICENSES
 
 
configure
configure
 
 

Repository files navigation

dvbipitools

Build carrier-grade IPTV infrastructure. Or just pretend you do in your lab.

Although DVB-IPI (ETSI TS 102 034) provides the conceptual backbone for the toolkit, individual services are intentionally decoupled. You don’t need a complete DVB-IPI environment to benefit from them. Daemons like dipitvhead or dipiradiohead work just as well feeding an RF modulator, acting as stream processors, or powering custom video distribution setups.

GitHub is not the primary development repository, but releases are published here and pull requests are welcome.

AI helped with the README files, -h boilerplate, man pages and test scaffolding. I did not let it mess up the hard parts.

Fantastic tools and where to deploy them

Tool Contrib Headend Edge Client Lab Purpose
dipitvhead ✔️ ✔️ ✔️ IPTV SCS/Muxer/Scrambler
dipiradiohead ✔️ ✔️ ✔️ Radio SCS/Muxer/Scrambler
dipirist ✔️ ✔️ ✔️ RTP/TS RIST bridge
dipisrt ✔️ ✔️ ✔️ RTP/TS SRT bridge
dipimetrics ✔️ ✔️ ✔️ ✔️ Per-host OpenMetrics
dipifccret ✔️ ✔️ ✔️ FCC (Annex I), RET (Annex F) server
dipisds ✔️ ✔️ ✔️ DVBSTP/SD&S (announce & listen)
dipibcg ✔️ ✔️ ✔️ DVBSTP/TVA BCG (publisher & reader)
dipixmltv ✔️ ✔️ ✔️ XMLTV ↔ DVB-IPI TVA XML converter
dipirec ✔️ ✔️ record and replay (FCC/RET client)
dipiscan ✔️ ✔️ Multicast TV/radio scanner (w/o SD&S)
dipixy ✔️ ✔️HN ✔️ MC/RIST/SRT → (LL)HLS/(LL)DASH/MP4/TS + DLNA
dipibim ✔️ BiM encoder/decoder
dipicam378 ✔️ cs378x CAS test CAM
dipidescramble ✔️ ✔️ descrambler (BISS & CAS validation)
dvbipitools ✔️ ✔️ ✔️ ✔️ ✔️ All of the above (multicall)

HN: Home Network, not directly on client devices.

Build

Your choice. Go for the classics: ./configure --release && make -j"$(nproc)" or use CMake:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

Options

CMake configure
-DCMAKE_BUILD_TYPE=Debug|Release --debug / --release Build type
-DDVBIPITOOLS_STATIC=ON --static Static linking (still glibc)
-DDVBIPITOOLS_STRIP=OFF --no-strip Keep symbols in release binaries
-DDVBIPITOOLS_TLS=OFF --no-tls No TLS support
-DDVBIPITOOLS_CSA=OFF --no-csa No CSA1/CSA2/BISS1
-DDIPIBCG_ZLIB=OFF --no-zlib dipibcg w/o compression support
-DDIPIRADIOHEAD_ZLIB=OFF --no-zlib dipiradiohead w/o ID3 compression
-DDVBIPITOOLS_RIST=OFF --no-rist Disable rist://
-DDVBIPITOOLS_SRT=OFF --no-srt Disable srt://
-DDIPIXY_HTTP2=OFF --no-http2 dipixy w/o HTTP/2
-DDIPIXY_HTTP3=OFF --no-http3 dipixy w/o HTTP/3

Note: The build automatically disables TLS support if OpenSSL is not found.

Dependencies

  • libssl
    • Required for HTTPS sources in dipitvhead, dipiradiohead, dipixy, dipirist, dipisrt and dipirec.
    • Enables CISSA/AES-128 Conditional Access, and BISS1E / BISS2 (Mode 1/E Session Word AES-128, Mode CA RSA-OAEP receiver keys) in dipitvhead and dipiradiohead.
    • Required to build dipicam378/dipidescramble at all - RSA/AES crypto is their whole purpose.
    • Required for dipimetrics and dipixy to serve HTTPS.
  • zlib
    • Optional: -Z/--compress in dipibcg (zlib/RFC 1950 compression of BCG containers)
    • Optional: dipiradiohead decodes compressed ID3v2.3 frames (ICY/HLS timed metadata)
  • libdvbcsa
    • Not a build dependency: If present, dipitvhead, dipiradiohead and dipidescramble can use it to enable CSA1/CSA2/BISS1 support.
  • librist
    • Required to build dipirist at all.
    • Optional: adds RIST support to dipitvhead, dipiradiohead, dipirec, dipixy and dipidescramble
  • libsrt
    • Required to build dipisrt at all.
    • Optional: adds SRT support to dipitvhead, dipiradiohead, dipirec, dipixy and dipidescramble
  • libnghttp2, libngtcp2 (>= 1.22), libngtcp2_crypto_ossl and libnghttp3
    • HTTP/2 and HTTP/3 support in dipixy.

Packaging

dpkg-buildpackage -b -us -uc

Build-Depends: debhelper-compat (= 13), cmake, libssl-dev, librist-dev.

Editorial notes

Some of the implemented formats are not part of DVB-IPI. They exist for convenience and to bridge between real-world usage of media formats and the standard.

Notable additions

Note: Some of the mentioned formats or protocols are supported across the toolchain. To keep it short, they get only mentioned once: at their most relevant/affected tool.

  • dipitvhead
    • HbbTV AIT injection (--hbbtv, ETSI TS 102 809) is hybrid broadcast/broadband signaling, a separate spec.
    • MPTS support is more like an interpretation than "specs driven". ETSI TS 102 034 v2.1.1 mentions Multi Program Transport Streams (MPTS) exactly twice:
      • In the abbreviation list
      • According to §7.1.0, Content Service Providers can use them
    • BISS (EBU Tech 3292): BISS1 Mode 1/E (CSA1), BISS2 Mode 1/E (CISSA) and BISS2 Mode CA (RSA-OAEP receiver entitlement). DVB-IPI prioritizes SimulCrypt.
  • dipiradiohead
    • Icecast/Shoutcast as an input source - none of this is part of DVB-IPI.
    • ICY StreamTitle, inline ID3v2 TIT2/TPE1 mapping into EIT.
  • dipirec
    • Matroska containers (mkv and mka).
    • SubRip subtitles (.srt) from EBU Teletext (ETSI EN 300 706). SubRip isn't a DVB format.
  • dipiscan
    • This tool would largely be unnecessary if deployments consistently used DVBSTP/SD&S as implemented by dipisds.
    • m3u, xspf and our own "local" csv format.
  • dipisds
    • All supported formats other than SD&S XML/BiM are convenience additions.
  • dipixmltv
    • XMLTV is not part of DVB-IPI; TVA XML encoded as BiM is.
    • CRIDs using the authority dipixmltv.invalid, reserved under RFC 2606 because this project is not a registered CRID authority.
  • dipibim
    • An uncompressed representation of TVA EPG data is not specified by ETSI TS 102 539, §7.2.
  • dipimetrics
    • OpenMetrics is not part of any DVB/ETSI specification.
  • dipirist
    • Reliable Internet Stream Transport (RIST) is not part of DVB.
  • dipisrt
    • Secure Reliable Transport (SRT) is not part of DVB.
  • dipixy
    • HLS, LL-HLS, MPEG-DASH and LL-DASH output are not part of DVB-IPI.
    • MPEG-5 LCEVC is too young for DVB-IPI, but just fits.

Known / deliberate gaps

On the other hand, full DVB-IPI goes way beyond the scope of this project.

  • The implemented AL-FEC is Annex E Layer 1, not Layer 2 (Raptor RFC 5053)
  • FCC in dipifccret is Annex I (RFC 6285 RAMS), not an Annex J Companion Stream
  • DVB Companion Screens and Streams
  • RTSP command/control for CoD services and multicast join (§6)
  • DHCP-based IP address assignment for the HNED (§8)
  • FUSS, the mandatory File Upload System Stub (§9)
  • Content Download Services / CDS, push or pull (§10)
  • SRM delivery for Content Protection revocation (§12)
  • Dynamic Service Management (§13)

Indirectly related:

  • dipitvhead, dipiradiohead and dipidescramble:
    • no ETSI TS 103 197 CSA3 or non-standard CSA2 "alternative" modes
    • no eECMs

Licence

GPL-3.0-or-later. See LICENSE and NOTICE.

About

DVB-IPI tools. Build your own IPTV infrastructure.

github.com/xplus2/dvbipitools

Topics

biss-cabroadcastingdvbdvb-ipidvb-simulcryptheadendiptvlcevclow-latency-dashlow-latency-hlsmpeg-tsmptsmulticast-streamsrfc6285ristrtp-streamingsrt

Resources

Readme
GPL-3.0 license

Security policy

Security policy
Activity

Stars

6 stars

Watchers

2 watching

Forks

1 fork
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.