18.05.2021

Программа для организации потокового вещания msd открыта под лицензией BSD

Исходные тексты проекта msd (Multi Stream daemon) переведены на лицензию BSD, а исходный код опубликован на GitHub. Ранее в исходных текстах распространялась лишь сокращённая версия msd_lite, а основной продукт был проприетарным. Кроме изменения лицензии проведена работа по портированию на платформу macOS (ранее поддерживались FreeBSD и Linux).

Программа msd предназначена для организации потокового вещания IPTV в сети по протоколу HTTP. Один сервер способен обслуживать несколько тысяч клиентов одновременно. Основной упор сделан на достижение максимальной производительности, а так же на предоставление тонких настроек, влияющих на качество восприятия клиентами услуги: скорость переключения каналов, устойчивость к сбоям передачи. Реализовано проксирование в режиме «один к многим»: данные полученные через одно HTTP-соединение можно раздавать множеству подключённых клиентов.

Особенности

  • Поддержка протоколов IPv4 и IPv6.
  • Анализатор потока MPEG2-TS .
  • Автоматическое переключение на резерв при отсутствии или ошибках на текущем источнике.
  • Zero Copy on Send (ZCoS) — уменьшает накладные расходы на обслуживание подключённых клиентов, всю работу по отправке данных клиенту берёт на себя ядро OS.
  • Поддержка «half closed» http-клиентов.
  • Приём udp-multicast, в том числе rtp, одновременно с разных интерфейсов.
  • Приём по tcp-http-get (в один поток и вещание множеству клиентов).
  • Автоматическое отключение от источников если нет подключённых клиентов.
  • Использование различных TCP Congestion Control алгоритмов в зависимости от порта на который пришёл клиент и URL запроса клиента
  • «умная» отправка заголовков MPEG2-TS новым клиентам.
  • Мгновенная отправка новому клиенту данных из кольцевого буфера, для минимизации времени ожидания начала воспроизведения.
  • Отправка любых дополнительных http-заголовков в запросах и ответах.
  • Шаблоны настроек для Stream Hub и источников потока.
  • Подробная статистика по каждому TCP соединению, для упрощения поиска проблем на уровне сети.

Источник.