The multicat package contains a set of tools designed to easily and efficiently manipulate multicast streams in general, and MPEG-2 Transport Streams (ISO/IEC 13818-1) in particular.
The multicat suite is very lightweight and designed to operate in tight environments. Memory and CPU usage are kept to a minimum, and they feature only one thread of execution. It is designed to run on Linux, FreeBSD and macOS.
multicat programmulticat itself is a 1 input/1 output application. Inputs and outputs can be network streams (unicast and multicast), files, directories, character devices or FIFOs. It is thought to be a multicast equivalent of the popular netcat tool. Typical applications are recording live transport streams, or playing out TS files without modification. It is also able to record a continuous stream into a directory, rotate the files periodically, and make seamless extracts from it.
multicat tries to rebuild the internal clock of the input stream while remaining agnostic of what is transported, so for files the clock is stored in an auxiliary file (example.aux accompanies example.ts) while recording. Other inputs are considered “live”, and the input clock is derived from the reception time of the packets.
ingests programingests is a companion application designed to manipulate TS files. It reads the PCR values of the file, and builds the auxiliary file that is necessary for multicat. The combination of ingests and multicat makes a simple and efficient TS file streamer.
aggregartp and reordertp programsaggregartp splits a single RTP stream (for instance a high-bitrate signal) to several contribution links with load balancing.
reordertp takes one or multiple inputs (from aggregartp or another source known to reorder and/or add jitter to packets) and smoothes them out to output the original stream in correct order.
smooths programThis program minimises jitter and pleases IAT analysers. It reads the RTP timestamps and waits for the proper time to send each packet.
multilive programThis program implements a VRRP-like master/slave redundancy between two servers. Both servers communicate via a multicast address, and if the master crashes, the slave takes over.
biTStream needs to be installed at build time.
git clone https://code.videolan.org/videolan/multicat.git
Browse the source online. Contributions can be sent as pull requests in our GitHub repository.