The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

21.02.2021 00:33

Исходные тексты проекта 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 соединению, для упрощения поиска проблем на уровне сети.


  1. Главная ссылка к новости (https://github.com/rozhuk-im/m...)
  2. OpenNews: Проект FastoTV развивает новую открытую IPTV-платформу
  3. OpenNews: Релиз медиацентра MythTV 31.0
  4. OpenNews: Продемонстрирована атака на Smart TV через подмену сигнала цифрового телевидения
  5. OpenNews: Представлен первый общедоступный релиз проекта IPTV-Analyzer
  6. OpenNews: Вышла новая версия Open Source пакета IPTVProbe для мониторинга IPTV
Автор новости: Ivan_83
Тип: Программы
Короткая ссылка: https://opennet.ru/54625-msd
Ключевые слова: msd, iptv, tv
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Любитель Монеточки (?), 09:35, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Проприераст-->Открытый код-->Проприераст

    Круговорот BSD

     
     
  • 2.3, Biba (??), 09:49, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    что не нравится в бзде?
     
     
  • 3.19, Аноним (19), 15:15, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Уж коль бери - не жалко, то на кой упоминать что-то в обязательном порядке? Лучше MIT тогда.
     
     
  • 4.38, Аноним (-), 18:15, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    MIT бздунообразен.
     
  • 3.40, YetAnotherOnanym (ok), 18:27, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем, что авторы  не обязаны давать исходники некоему умозрительному воображаемому потребителю с вооброжаемо-высоким уровнем скиллов в программировани и аудите кода, в которых он, воображаемый потребитель, мог бы обнаружить ошибки и/или бэкдоры, исправить их и сообщить об этом анониму с опеннета.
     
  • 3.45, Аноним (-), 18:53, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > что не нравится в бзде?

    То что линукс в итоге сильно лучше развился, там жабой душились меньше.

     
     
  • 4.47, Аноним (-), 19:35, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> что не нравится в бзде?
    > То что линукс в итоге сильно лучше развился, там жабой душились меньше.

    Неужели очередной опеннетный оналитек пишет нам из фреймбуферного GPL-браузера, через зеркало с GPL-вебсервером и GPL-перлом?
    Или все же из хромозиллы, запущенной под вялено-иксами, прямо на netginx и ART10-перл движок, "Но это другое! Понимать надо!"(с)?


     
     
  • 5.49, Аноним (-), 21:54, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как бы, без GPLного кернела все это не получилось бы. Точнее, что-то, конечно, получилось но на выбор или проприетарщицкий концлагерь или невменяемые ошметки. И вот это мне почему-то не нравится.

    А браузер это круто, только что с ним без кернела делать? И да, при постановке вопроса ребром кернел важнее браузера. Как кернел решит так и будет. Что кернел захочет то и покажет браузеру.

    Так что выбирая между хрен знает каким кернелом и открытым юзермодом и хорошим кернелом и хрен знает каким юзермодом, мне второй вариант как-то лучше. Имеючи контроль над кернелом я любой юзермод в стойло поставлю, по большому то счету.

     
     
  • 6.53, Аноним (-), 22:43, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Поражающий уровень аналитики и аргументации не хватает еще всем очевидно же, ч... большой текст свёрнут, показать
     
     
  • 7.56, Аноним (-), 02:39, 24/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну так есть два более-менее похожих проекта Одних таскали почти по лагерям, пат... большой текст свёрнут, показать
     
  • 2.5, Аноним (5), 09:50, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Это уже в три раза больше, чем мог бы сделать ты, если бы ты делал хоть что-то, а не кормил /dev/null
     
     
  • 3.20, Аноним (19), 15:17, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Мой /dev/null стошнило от твоей кормёжки.
     
     
  • 4.55, Минона (ok), 16:29, 22/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    cat /dev/ass > /dev/head
     
  • 2.22, Аноним (19), 16:07, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если что, вещать можно и VLC. Он GPLv2.
     
     
  • 3.39, Ivan_83 (ok), 18:26, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это совсем не то.

    Здесь есть http сервер, куда подключаются клиенты и могут забирать либо заранее сконфигуреные каналы, либо в URL указать с какого интерфейса сервера какую multicast группу им отдавать.
    Если приходит второй и последующие клиенты на тот же URL то они получают сразу пачку данных из кеша и не ждут пока накапает очередной ключевой кадр для начала вопроизведения.

     
     
  • 4.46, Аноним (-), 18:55, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Из такого описания нихрена не понятно. Это совместимо с стандартами веба, например? И если да - с какими? Ну там DASH? HLS? Какие форматы и проч оно жует? Или это таки другое? Типа внутреннего тулса для телевизионных броадкастеров?
     
     
  • 5.48, Ivan_83 (ok), 19:38, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Схема такая.
    Есть вещатель, он вещает mpeg2-ts потоки в DVB (любое, C, T, S - не суть).
    Этот поток mpeg2-ts снимается каким то DVB тюнером и выплёвывается как есть в сеть мультикастом. Для этого есть и "аппаратные" железки или можно самому на линухе и опенсорсе сделать. Я этот функционал так и не дописал.

    Некоторые операторы раздают IPTV прямо мультикастом.
    Это как бы не является стандартом, но по факту производители его поддерживают, в основном. Бывает что в тех же самсунгах ничего нет для того чтобы посмотреть, но когда напишешь виджет то оказывается что встроенный в телек плеер умеет это показывать.

    Мультикаст не всем удобен, и вот чтобы его преобразовать в http и используется msd или udpxy.
    Если бывает что какой то телек или плеер не жрёт мультикаст, то http они все умеют.
    А поскольку там внутри mpeg2-ts то они по факту начинают просто из сети через tcp сокет забирать ровно тоже самое что они могут забирать из DVB тюнера.
    Формально я не знаю стандарта именно про mpeg2-ts@http но по факту оно получается что есть.
    Наиболее близко - DLNA - оно как раз умеет по http забирать разный контент.
    В msd когда то был DLNA сервер, но я вынес его в отдельную прогу - ssdpd.

    И отдельно стоит упомянуть, что телевизионщики, как и телефонисты, сильно отбитые ребята в плане стандартов.
    Есть некий стандарт как передавать DVB по IP, но там куча всего наворочена, всё ради того чтобы гарантировать синхронность. И я не видел реализаций.


    HLS - это mpeg2ts нарезанный на кусочки по 3-15 секунд на кусок, кусок обязательно начинается с ключевого кадра.
    DASH - уже не помню.
    Я когда то брался добавлять HLS, но меня выморозило делать парсер для вытаскивания ключевых кадров из mpeg2-ts потока. Кажется в коде что то осталось.

     
     
  • 6.51, Аноним (-), 21:59, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > DASH - уже не помню.

    Гы, не помнить основную технологию вещания в вебе это вы круто. Так то в базовом виде плейлист + описание где чанки таскать. Там забавно сделано, хидеры потока отдельно, чанки отдельно, так можно и типа-безразмерный поток делать. При том что каждый сегмент лимитирован в размере а заодно плеер при решении качать энный сегмент может (при доступности вариантов) выбрать другой поток, адаптируясь под канал (потому и dynamic/adaptive собственно).

    Но спасибо за объяснение, так понятнее стало, это что-то типа преобразователя для локалок.

     
  • 2.28, анонн (ok), 16:43, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Проприераст-->Открытый код-->Проприераст
    > Круговорот BSD

    Я так понимаю, опеннетных экспертов-знатоков не затруднит кинуть ссылку на свежие версии кода (ex)GPL-ных Nessus или FBReader?

     

  • 1.2, lockywolf (ok), 09:37, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    OpenBSD поддерживается?
     
     
  • 2.4, Biba (??), 09:50, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    как ты начал юзать бздю, почему не линукс?
     
     
  • 3.7, Аноним (7), 09:58, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    А какая разница? Что там чёрное окошка с буквами, что там.
     
  • 3.8, lockywolf (ok), 10:02, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > как ты начал юзать бздю, почему не линукс?

    Я использую Линукс на десктопе уже лет 15, и где-то 5 лет использую только Линукс. Из вайновских программ -- Wechat, OneNote и FurMark.

    OpenBSD поставил как-то один раз на сервер поиграть, и мне понравилось тем, что: (а) поддерживает ключевые технологии типа wireguard, причём быстро, (б) требует минимальной работы по поддержанию в рабочем состоянии, грубо говоря, (в) разработчики трезво оценивают свои силы, и не берутся за то, что требует реально излишнее количество труда; это удобная эвристика, чтобы понять, что имеет смысл осваивать, (г) неплохая документация; она немногословна, но консистентна.

    Грубо говоря, опенбсд -- хороший "личный сервер (vps)" для хакера. Ниша не очень большая, но что-то же там должно работать.

     
     
  • 4.12, Аноним (12), 10:44, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В моём случае - только 14 и тоже 5 Под вайном сегодня гоняю только цигвин с пер... большой текст свёрнут, показать
     
     
  • 5.14, YetAnotherOnanym (ok), 11:21, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Цигвин под вайном - мсье знает толк....
     
     
  • 6.16, n80 (?), 11:57, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, ему поможет MXE (M cross environment), как в своё время мне. Возможно, просто разработчик того или другого и нужно тестирование в нетипичных условий для выявления всяких краевых случаев.
     
     
  • 7.21, Аноним (19), 15:56, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Использую для указанных целей MinGW64 в Ящике. Спасибо за подсказку про https://mxe.cc/, буду смотреть.
     
     
  • 8.25, n80 (?), 16:22, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    MinGW, конечно, тоже вариант, тем более что в дебиановских репозиториях он тепер... текст свёрнут, показать
     
  • 5.17, б.б. (?), 13:23, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Хотел спросить насчёт дуалбута в openbsd, что там за дичь с дисковыми разделами, после которой нужно восстанавливать уже линуксовый корень через testdisk, и это кроме переустановки гроба?

    вот уж не знаю. достаточно один раз в жизни создать раздел A6, и можно хоть каждый день с нуля ставить систему - ничего, кроме этого раздела, трогаться не будет, если ты не скажешь иначе

    > - Reordering libraries надолго задерживает загрузку. Это можно отключить?

    поскольку я часто пользуюсь openbsd с системами на 64-384 мб памяти, я ещё на этапе установки делаю rm -r /usr/share/relink :)

     
  • 5.18, lockywolf (ok), 13:24, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > это кроме переустановки гроба? Есть ли у тебя какие наработки на
    > эту тему? Хочется как-то менее геморройно вывернуться.
    > Из того что порадовало:
    > - Работают иксы нормально на i915
    > - iwl7260 firmware докачивается само после установки, но всё-таки сначала нужен ethernet.
    > Что не порадовало:
    > - Гемор с дуалбутом.
    > - Reordering libraries надолго задерживает загрузку. Это можно отключить?
    > - Никакого засыпания и убранная недавно поддержка линукс-ABI, но на данном этапе
    > это воспринимаю как данность. Наверное не стоит требовать сразу всего.

    Никогда не пробовал openbsd на десктопе, но #openbsd на фриноде довольно живой.

     
  • 4.31, Ivan_83 (ok), 17:17, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    вичат - фи!
     
  • 4.52, Аноним (-), 22:01, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > трезво оценивают свои силы,

    Зашедший к ним разок в рассыль нетбсдшник здорово поспорил с этим - по части виртуализации. И как то так бывает что больше всего бьющий себя пяткой в грудь "хакер" может оказаться и ламером обыкновенным.

     
  • 2.30, Ivan_83 (ok), 17:16, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не тестировалось.
    Скорее всего потребуются доработки в liblcb, пдобные тем что использовались для MacOS.
     

  • 1.6, Аноним (7), 09:58, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    MPEG2-TS подскажите, оно вообще ещё актуально для потокового вещания? Просто от этого названия веет 2000 годами, думал сейчас уже нечто новое есть.
     
     
  • 2.9, lockywolf (ok), 10:09, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > MPEG2-TS подскажите, оно вообще ещё актуально для потокового вещания? Просто от этого
    > названия веет 2000 годами, думал сейчас уже нечто новое есть.

    Стал повсеместно поддерживаться плюс-минус после 2012 года. Чему там веять? Да и вообще, какая разница какой там контейнер?

     
  • 2.10, НеАноним (?), 10:11, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    A что такого? Хорошая, отлажененная технология передачи сигнала в основном для спутникового тв.
     
  • 2.11, Специалист (?), 10:33, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Новое есть, но все равно в основном mpeg2-ts используется. Это и для HLS контейнер (эппловский формат адаптивного вещания) и для обычных IPTV трансляций. Ну а ещё он потоковый и с ним миллион оборудования работает. Есть ещё mp4 и с ним вместе DASH, но он не очень потоковый, поэтому неудобен. А так вещатели внедряют кто во что горазд: srt, rtmp, rtsp и тд. RTMP это для онлайн стриминга на твич и тому подобное, RTSP — по нему камеры работают, тоже популярен, но это все не IPTV
     
     
  • 3.57, Аноним (-), 02:45, 24/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ютуб в нем сроду гонит live стримы И по факту отличие live от обычного только в... большой текст свёрнут, показать
     
  • 2.32, Ivan_83 (ok), 17:21, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да.
    Всё DVB это mpeg2-ts, там менятся нечему.
    Они только раз в 5-10 лет докидывают пару новых ID для кодеков, и то я не уверен что это в mpeg2-ts а не гдето ещё.

    mpeg2-ts - если что это не про сжатие, это просто транспорт.
    Оно про то, что поток разбирается на кусочки по 188 байта и приклеивается заголовок, ну и отдельные кусочки идут чисто со служебками, типа всяких таблиц.
    Примерно как IPv4 в мире интернета, только от контуженых телевизионщиков.

     

  • 1.15, curver (ok), 11:34, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Автор молодец, хотя софтина и нишевая. Определенно плюс в карму. И за поддержку FreeBSD ещё один плюс.
     
     
  • 2.26, Аноним (26), 16:25, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Так-то автор это изначально рисовал на фряхе, на линухе это порт, и когда прога была проприетарная, это был не самый прямой порт.
     
     
  • 3.33, Ivan_83 (ok), 17:28, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не совсем так.
    Изначально был некий код, для работы с потоками и сетью чисто под FreeBSD, но это было до iptv.
    Когда iptv началось код был доработан чтобы под линухом работать и какое то время писался под линухом а под фрёй только проверялся. Потом фря стала основной платформой, но по сути основной функционал уже был.
     

  • 1.23, Аноним (19), 16:08, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну хорошо, хоть не Rust.
     
  • 1.24, Иваня (?), 16:10, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Никогда не слышал про эту программу, но код особенных алгоритмов интересно почитать, ммм на сишечке, всё как я люблю :)
     
     
  • 2.44, Ivan_83 (ok), 18:42, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Он в основном тут: https://github.com/rozhuk-im/liblcb
    Пожалуй чтение nginx даст вам больше, оно может и больше по объёму но и багов они словили больше - больше всего в коде учтено.
    Я вот только сегодня понял что EINTR не обарабатываю правильно, и что работу с сигналами стоит переделать в целом.
     
     
  • 3.50, CAE (ok), 21:54, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    :) EINTR - наше всё
     
  • 3.54, n80 (?), 01:50, 22/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Я вот только сегодня понял что EINTR не обрабатываю правильно, и что работу с сигналами стоит переделать в целом.

    Обычно-часто-регулярно EINTR обрабатывается libc и это делается прозрачно и правильно (насколько помню, это называется BSD-семантикой обработки сигналов), т.е. в обычном коде обработку его для всех подряд мест с системными вызовами не приходится прикручивать, а всякое ~странное реализуют через epoll/poll/select.

     

  • 1.27, Аноним (26), 16:30, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Посмотрим-посмотрим. В свое время пытались применить честно купленный бинарник, но работал он как-то ниалё. Пришлось городить тему с несколькими экземплярами msd_lite. А деньги за неиспользуемый msd начальству обосновал как донат автору за отличный msd_lite :)
     
     
  • 2.34, Ivan_83 (ok), 17:29, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Извините.
     
     
  • 3.36, Аноним (26), 18:12, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно! Нормально все.

    Бинарь крашился, на сколько помню, на какой-то процессорной инструкции, при том совершенно в рандомный момент. При этом в ringBufStorePath оставались болтаться файлы кольцевых буферов от крашнутого процесса. В какой-то момент место кончалось и сервис умирал насовсем. Есть серьезные подозрения, что сейчас я этот баг вряд ли смогу воспроизвести.

     
     
  • 4.42, Ivan_83 (ok), 18:36, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Там есть режим работы без использования sendfile(), от него никаких файлов не будет оставатся - всё чисто в памяти, но нагрузка на проц будет чуть выше.
     
  • 2.43, Ivan_83 (ok), 18:37, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/rozhuk-im/msd_lite - теперь тоже на гихубе, сегодня пару часов убил чтобы историю в коммиты конвертировать :)
     

  • 1.29, Аноним (29), 16:44, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это теперь любой желающий сможет вещать в всемирную паутину?
     
     
  • 2.35, Ivan_83 (ok), 17:31, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Можно было и до этого.
    По стране сотни открытых udpxy на домашних роутерах, но они тянут от силы по 5-10 каналов, дальше или канал забивается или роутер не тянет.
    Эта же штука в проц если и упрётся то где то сильно после 10г отдачи.
     

  • 1.37, Аноним (-), 18:14, 21/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стало не нужно открыли.
     
     
  • 2.41, Ivan_83 (ok), 18:35, 21/02/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не совсем так.
    Лично у меня пропал интерес к IPTV (интернет в виде торрентов и ютуба победил), но время от времени софтину кто то хотел заюзать.
     

  • 1.58, наме (?), 11:29, 25/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а порт-то где ?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру