The msd streaming software is open source under the BSD license.

The sources of the msd (Multi Stream daemon) project have been converted to a BSD license, and the source code has been published on GitHub. Previously, only a shortened version of msd_lite was distributed in source code, and the main product was proprietary. In addition to changing the license, porting to the macOS platform was carried out (FreeBSD and Linux were previously supported).

The msd program is designed to organize IPTV streaming on the network via the HTTP protocol. One server is capable of serving several thousand clients at the same time. The main emphasis is on achieving maximum performance, as well as on providing fine-tuning that affects the quality of customer perception of the service: channel switching speed, resistance to transmission failures. One-to-many proxying has been implemented: data received via one HTTP connection can be distributed to many connected clients.

Features

  • Support for IPv4 and IPv6 protocols.
  • MPEG2-TS Stream Analyzer.
  • Automatic switching to the reserve in the absence or errors on the current source.
  • Zero Copy on Send (ZCoS) - reduces the overhead for servicing connected clients, all the work of sending data to the client is taken over by the OS kernel.
  • Support for "half closed" http clients.
  • Receiving udp-multicast, including rtp, simultaneously from different interfaces.
  • Receiving via tcp-http-get (in one stream and broadcasting to many clients).
  • Automatic disconnection from sources if there are no connected clients.
  • Using different TCP Congestion Control algorithms depending on the port to which the client came and the URL of the client request
  • "smart" sending of MPEG2-TS headers to new clients.
  • Instantaneously send data from the ring buffer to a new client to minimize the waiting time for playback to start.
  • Sending any additional http headers in requests and responses.
  • Settings templates for Stream Hub and stream sources.
  • Detailed statistics for each TCP connection, to simplify troubleshooting at the network level.

Source: opennet.ru

Add a comment