Using TSDuck as a library for C++, Python, Java
TSDuck can also be used as a MPEG transport stream C++ library for your own applications.
Most of the TSDuck code is located into a large shareable library. The utilities and plugins are usually only small wrappers around the TSDuck library. You may use the TSDuck library to develop new plugins or create completely independent applications.
All tables and descriptors, from DVB, ATSC and ISDB are represented using C++ classes. Demux and packetization of various types of data, sections, PES, SCTE-35, T2-MI, Teletext, any kind of data processing or monitoring can be implemented using ready-to-use C++ classes.
The code and API are based on modern C++ patterns (a C++20 compliant compiler is required).
The following diagram illustrates the TSDuck software architecture.

All C++ classes in the TSDuck library are documented using Doxygen.
There is a binary installer for the TSDuck development environment too. So, there is no need to rebuild TSDuck first. See more details here.
For Python and Java developers, TSDuck bindings exist to allow running transport stream processing pipelines from Python or Java applications. However, because TSDuck is essentially a large C++ library, only a limited set of features is accessible from applications in other languages. See more details here.