How it works
Client socket is passed to the existing Stream Hub, or Stream Hub can be created on request.
For each channel, created its own Stream Hub.
To one Stream Hub can connect multiple clients.
Stream Hub has a unique name by which identified. For dynamic Stream Hub is generated based on the request URL. Channels from the configuration file, it is the name of the channel.
Stream Hub is bound to a single thread (thread + kqueue/epoll).
Each thread is bound to the processor core. You can configure the number of threads and processor affinity.
Stream Hub may have one or more sources (multicast, http etc).
Each source has its own circular buffer (ring Buf) to receive data.
Stream Hub as data become available from the active source sends data to clients from the ring buffer.
New client Stream Hub can send MPEG2-TS service headers (flag fMPEG2TSAnalyzing in the config file).
It is necessary to initialize the decoder client and not drop a MPEG2-TS packets in the search of a service data. Just Stream Hub can send specified in config file / URL query number of kilobytes precache from the ring buffer.
Types Stream Hub
- static channels: described in the config file, may have multiple sources with different settings
- dynamic - multicast: compatible with udpxy by URL, for example: http://192.168.0.1:7088/udp/220.127.116.11:1234
- dynamic - http: As the source stream URL acts another server, for example: http://192.168.0.1:7088/http/SomeServer.tv:7088/udp/18.104.22.168:4000
- dynamic - transparent: the same as http but the field host in the HTTP header points to another server, for example: http://SomeServer.tv:7088/udp/22.214.171.124:4000