Автор Тема: NoxBit feature request  (Прочитано 4242 раз)

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
NoxBit feature request
« : Март 20, 2017, 18:10:14 »
Прошу сильно не ругать, но возможно ли запустить один канал на нескольких устройствах внутри своей сети?

Да, можно. Только что бы не было "рассинхронизации" я использую VLC как multicast сервер.
Как пример:
/usr/bin/cvlc --miface eth3  --http-reconnect --loop --live-caching 1000 --network-caching 1000 -vvv 'http://127.0.0.1:6689/stream?cid=3815&qi="50.7.141.10,185.74.223.182,185.74.223.183"' --sout "#standard{access=udp,mux=ts,dst=239.250.0.11:5500,sap,name='Мульт'}"

А клиенты уже "смотрят" следующий url:
udp://@239.250.0.11:5500

 
MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #1 : Март 20, 2017, 21:10:17 »
Прошу сильно не ругать, но возможно ли запустить один канал на нескольких устройствах внутри своей сети?

Да, можно. Только что бы не было "рассинхронизации" я использую VLC как multicast сервер.
Как пример:
/usr/bin/cvlc --miface eth3  --http-reconnect --loop --live-caching 1000 --network-caching 1000 -vvv 'http://127.0.0.1:6689/stream?cid=3815&qi="50.7.141.10,185.74.223.182,185.74.223.183"' --sout "#standard{access=udp,mux=ts,dst=239.250.0.11:5500,sap,name='Мульт'}"

А клиенты уже "смотрят" следующий url:
udp://@239.250.0.11:5500
Интересно. Тоже думал про такой вариант.
Возможно такую фичу и можно будет вполне "просто" добавить, если такой вариант будет востребован широкими нар. массами.

Форумчане!  В этот топик кидаем ваши предложения. Стараемся обстоятельно и предметно  описать запрос.
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #2 : Март 20, 2017, 22:58:35 »
Я у себя реализовал почти полноценный контент-сервер для IPTV.
Логика работы следующая:
1. Есть снифер который слушает все запросы на подписку/отписку в мультикаст-группе
2. Управляющий модуль (стартуер/остаравливает) vlc
3. Генератор плейлистов

Снифер на perl5
Коммандер - на perl5
1 канал = 1 vlc
vlc запускается 2-мя bash- скриптами. Первый скрипт запускает сам vlc в frontgroud, output перенаправляет в лог. 2-й скрипт состоит из 1 while, в котором уже стартует 1й скрипт. Этот метод позволяет обойтись без wathdog'a

Если будет интересно - могу выслать исходники

p.s. работа с vlc как сервера не особо себя показала, т.к. в случае транскодинга есть запуты по всем каналам вещания

MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #3 : Март 20, 2017, 23:10:30 »
Я у себя реализовал почти полноценный контент-сервер для IPTV.
Логика работы следующая:
1. Есть снифер который слушает все запросы на подписку/отписку в мультикаст-группе
2. Управляющий модуль (стартуер/остаравливает) vlc
3. Генератор плейлистов

Снифер на perl5
Коммандер - на perl5
1 канал = 1 vlc
vlc запускается 2-мя bash- скриптами. Первый скрипт запускает сам vlc в frontgroud, output перенаправляет в лог. 2-й скрипт состоит из 1 while, в котором уже стартует 1й скрипт. Этот метод позволяет обойтись без wathdog'a

Если будет интересно - могу выслать исходники

p.s. работа с vlc как сервера не особо себя показала, т.к. в случае транскодинга есть запуты по всем каналам вещания
Спасибо, идея ясна.
Как я понимаю от пирагента достаточно было бы  отдавать в указанную мултикаст-группу поток. Потребуется механизм для останова вещания по запросу.
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #4 : Март 20, 2017, 23:16:17 »
Потребуется механизм для останова вещания по запросу.

Я веду у себя учет кто на что подписан.
Если подписок на канал больше нет (или нет активных подписок более 24 чаво), убиваем все процессы связанные с этим мультикаст-адресом:
           for i in $(ps aux | grep $mcast_address | grep -v grep | awk '{ print $2 }'); do kill -9 $i; done
Учет веду пока что через storable-объекты перла, но есть желание перевести все дело на mysql
« Последнее редактирование: Март 21, 2017, 11:38:03 от kursantkvi »
MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #5 : Март 20, 2017, 23:21:56 »
У меня стартующий скрипт имеет имя:
$mcast_ipaddress.sh

Примерное содержание:
#!/bin/bash
isroot=''
isrootend=''
whoami=$(whoami)
if [ "$whoami" == "root" ]
then
  isroot="su kursantkvi -c "
  isrootend="'"
fi
while [ 1 == 1 ]
do
  $isroot '/usr/iptvserver/playfiles/239.250.0.11.sub.sh'
done

2-й скрипт
$mcast_ipaddress.sub.sh
#!/bin/bash
/usr/bin/cvlc --miface eth3  --http-reconnect --loop --live-caching 1000 --network-caching 1000 --http-user-agent 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' -vvv 'http://127.0.0.1:6689/stream?cid=3815&qi="50.7.141.10,185.74.223.182,185.74.223.183"' --sout "#standard{access=udp,mux=ts,dst=239.250.0.11:5500,sap,name='Мульт'}" >> /var/log/iptvserver/239.250.0.11.log 2>&1

MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #6 : Март 21, 2017, 16:20:31 »
На мой взгляд системе не хватает следующего функционала:
  1. Организация подсистемы логирования (на данный момент все плюется в лог):
    а. Определение лог-файла через конфигурацию
    б. Задание максимального размера лог файла, с его последующей ротацией
    в. Разделение логов на разные файлы Hypervisor, Downloader, Agent
  2. Закачка контента в виртуальную память. На данный момент мы в конфиге указываем -dir=. Я предлагаю сделать параметр -dir=memory, который будет указывать системе работать с /dev/shm. Могу предположить что через 3-4 месяца, народ массово будет писать что-то типа "все тупит", "сильно грузит диск" и т.д.
  3. Управление скоростью. Задать максимальную скорость закачки/отдачи
  4. Автостарт трансляций. Например у меня есть 10-15 постоянных трансляций, которые должны стартовать при старте noxbit, было бы неплохо определять такие источники напрямую из конфиг-файла
MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #7 : Март 21, 2017, 16:57:12 »
На мой взгляд системе не хватает следующего функционала:
  1. Организация подсистемы логирования (на данный момент все плюется в лог):
    а. Определение лог-файла через конфигурацию
    б. Задание максимального размера лог файла, с его последующей ротацией
    в. Разделение логов на разные файлы Hypervisor, Downloader, Agent
  2. Закачка контента в виртуальную память. На данный момент мы в конфиге указываем -dir=. Я предлагаю сделать параметр -dir=memory, который будет указывать системе работать с /dev/shm. Могу предположить что через 3-4 месяца, народ массово будет писать что-то типа "все тупит", "сильно грузит диск" и т.д.
  3. Управление скоростью. Задать максимальную скорость закачки/отдачи
  4. Автостарт трансляций. Например у меня есть 10-15 постоянных трансляций, которые должны стартовать при старте noxbit, было бы неплохо определять такие источники напрямую из конфиг-файла
1.а и 1.б - считайте у вас на кармане.
1.в - скорее не будет, ибо будут трудности при сведении у департамента customer service.

2. наверное огорчу, но скорее этого не следует ждать, уж оченя глубокие завязки на файловую систему. За tmpfs вас, над думать, агитировать не надо.

3. На трансляцию или общую ?

4. Ждёмс этой фичи, однако и вы должны быть готовы пирагентом отдавать эти трансляции, резервировать 64k - ну совсем не интересно для пировой сети.
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #8 : Март 21, 2017, 17:13:14 »
1.а и 1.б - считайте у вас на кармане.
Отлично! Особо ждемс ротацию.
1.в - скорее не будет, ибо будут трудности при сведении у департамента customer service.
Ну, на нет и суда нет  ;) grep никто не отменял. Главное что бы оставили "идентификаторы" служб
2. наверное огорчу, но скорее этого не следует ждать, уж оченя глубокие завязки на файловую систему. За tmpfs вас, над думать, агитировать не надо.
-dir=/dev/shm/noxbit - великолепно справляется с поставленной задачей. Тогда предлагаю добавить эти методы в шапку общей Linux-темы, ибо не все в наше время знают о наличии даже tmpfs...
3. На трансляцию или общую ?
я думаю что все же общую
4. Ждёмс этой фичи, однако и вы должны быть готовы пирагентом отдавать эти трансляции, резервировать 64k - ну совсем не интересно для пировой сети.
Куда же без этого!  8)
MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

Extremal1981

  • Newbie
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #9 : Март 22, 2017, 11:18:19 »
Отличная новость, если Noxbit сможет отдавать поток в multicast на определенный сетевой интерфейс. Сразу исчезнет необходимость использовать в домашней сети vlc для конвертирования http в udp multicast !  Ждём с нетерпением, и если ещё будут сборки для arm, то это будет пожалуй просто супер!! для внедрения Noxbit прямо в прошивку DD-WRT OpenWRT!

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #10 : Март 22, 2017, 12:22:46 »
Отличная новость, если Noxbit сможет отдавать поток в multicast на определенный сетевой интерфейс. Сразу исчезнет необходимость использовать в домашней сети vlc для конвертирования http в udp multicast !  Ждём с нетерпением, и если ещё будут сборки для arm, то это будет пожалуй просто супер!! для внедрения Noxbit прямо в прошивку DD-WRT OpenWRT!
Эх ... там тулчейн используется настолько древний, что иновационно прогрессивный коксбит без болгарки не будет всунуть. IMHO.

Предлагаю проговорить интерфейс с пирагентом на предмет вещания по малтикасту. Могу для затравки пердложить вот так:
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&start - для старта
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&stop - для стопа
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #11 : Март 22, 2017, 13:53:29 »
На мой взгляд системе не хватает следующего функционала:
  1. Организация подсистемы логирования (на данный момент все плюется в лог):
    а. Определение лог-файла через конфигурацию
    б. Задание максимального размера лог файла, с его последующей ротацией
    в. Разделение логов на разные файлы Hypervisor, Downloader, Agent

Есть обновление.
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

kursantkvi

  • Full Member
  • ***
  • Сообщений: 106
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #12 : Март 22, 2017, 15:20:00 »
Предлагаю проговорить интерфейс с пирагентом на предмет вещания по малтикасту. Могу для затравки пердложить вот так:
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&start - для старта
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&stop - для стопа

Да, старт/стоп - имхо хорошо
Я бы предложил все таки делать более сложную логику, т.к. многие пользователи будут забывать делать stop, на мой взгляд лучше отслеживать подписки, и если активных подписок нет, тормозить поток автоматически.
  Запуск:
    1. http://...:6689/stream?cid=...&mcast=239.x.x.x:123 - запуск вещания на определенный групповой адрес. Остановить вещание, если нет активных подписок в течении 300 секунд
    2. http://...:6689/stream?cid=...&mcast=239.x.x.x:123&mdelay=3600 - запуск вещания на определенный групповой адрес. Остановить вещание если нет активных подписок в течении 3600 секунд
    3. http://...:6689/stream?cid=...&mcast=239.x.x.x:123&nonstop - запуск вещания на определенный групповой адрес, без учета времени сессии (остановка только по команде)
  Остановка
    1. http://...:6689/stream?cid=...&mcast=239.x.x.x:123&stop - остановка вещания на групповом адресе

Так же думаю было бы неплохо добавить в config-файл на каком интерфейсе поднимать слушатель. Что-то типа:
  listener lo0,eth1,... | all | 127.0.0.1,192.168.0.1... | 0.0.0.0

Так же интересно будет иметь black/white листы, где можно указать с каких хостов нельзя/можно подключаться к noxbit'у
 deny-hosts 8.8.8.8, 8.8.8.8/32, 8.8.8.8/24 ...
 allow-hosts 8.8.4.4, 8.8.4.4/32, 8.8.4.4/24 ...

Причем таких записей может быть много, их приоритет будет зависеть от того чья запись ниже в конфиге, т.е

  deny-host 129.168.0.0/24
  allow-host 192.168.0.2, 192.168.0.53
  deny-host 192.168.0.53

- Запрещены все подключение из диапазона адресов 129.168.0.0/24 за исключением 192.168.0.2

MGTS      ->|
SevenSky ->| -> CentOS 6.5 -> NoxBit -> VLC -> Multicast 
OnLime    ->|


(Orange PI + OpenELEC) * 4

dr. SysMan

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 994
    • Просмотр профиля
    • NoxBit hot news
Re: NoxBit feature request
« Ответ #13 : Март 22, 2017, 15:50:51 »
Не соображу как сабскрабера группы поймать на стороне вещателя? IGMP ловить? А на винде ?
Tox ID :
4C7CA6A2C5713FB948257C63FFEB485585D5DCF9BB9DEA7FB3847DADDB7271620F73C0DB30B1
Telegram:
Tech. support : https://t.me/Darth_SysMan
Channel: https://t.me/NoxBit

Extremal1981

  • Newbie
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: NoxBit feature request
« Ответ #14 : Март 22, 2017, 16:07:00 »
Да достаточно будет  start/stop этоже мультикаст, любой свитч поддерживающий igmp и так не будет на порт передавать поток без подписки! По мне остальные навороты не особо нужны, особенно касаемо разграничения доступа, для этого есть iptables. Главное чтобы стабильно работало, то что уже есть! Сейчас домой приеду проверю новую версию!! Респект вам dr. SysMan! Реально зауважал!  8)

Цитировать
Предлагаю проговорить интерфейс с пирагентом на предмет вещания по малтикасту. Могу для затравки пердложить вот так:
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&start - для старта
http://...:6689/stream?cid=...&mcast=239.x.x.x:123&stop - для стопа

Просьба не зубудьте про интерфейс на который поток отдавать, что-нибудь типа того http://...:6689/stream?cid=...&mcast=239.x.x.x:123&eth=eth0&start
т.к. сетевух несколько бывает
« Последнее редактирование: Март 22, 2017, 16:12:25 от Extremal1981 »