Перевод этой страницы:
ru

Инструменты пользователя

Инструменты сайта


ru:software:msd:internals

Внутреннее устройство

Клиентский запрос поступает на встроенный web сервер.
Применяются настройки описанные в разделе HTTP подсекция skt и congestionControl.

Сокет клиента передаётся существующему Stream Hub, либо Stream Hub может быть создан по запросу клиента.

Для каждого канала создаётся свой собственный Stream Hub.

К одному Stream Hub может быть подключено множество клиентов.

Stream Hub имеет уникальное имя по которому идентифицируется. Для динамических Stream Hub оно генерируется на основе URL запроса. Для каналов из файла конфигурации оно соответствует имени канала.

Stream Hub привязывается к одному потоку (thread + kqueue/epoll).
Каждый поток привязывается (bind) к ядру процессора. Можно настроить количество потоков и привязку к процессорам.

Stream Hub может иметь один и более источников (multicast, http и тп).
Каждый источник имеет свой кольцевой буфер (ring Buf) для приёма данных.

Stream Hub по мере поступления данных из активного источника отправляет клиентам данные из кольцевого буфера.

Новому клиенту Stream Hub может отправить MPEG2-TS служебные заголовки (флаг fMPEG2TSAnalyzing в конфиге).
Это необходимо чтобы декодер клиента инициализировался и не отбрасывал MPEG2-TS пакеты в поисках служебных данных. Так же Stream Hub может отправить указанное в конфиг файле / URL запроса количество килобайт precache из кольцевого буфера.

Виды Stream Hub

  • статические каналы: описываются в конфиг файле, могут иметь несколько источников с разными настройками
  • динамический - multicast: совместимы с udpxy по URL, например: http://192.168.0.1:7088/udp/238.1.1.15:1234
  • динамический - http: в качестве источника потока в URL выступает другой сервер, например: http://192.168.0.1:7088/http/SomeServer.tv:7088/udp/239.0.0.116:4000
  • динамический - transparent: тоже что и http но поле host в HTTP заголовке запроса указывает на другой сервер, например: http://SomeServer.tv:7088/udp/239.0.0.116:4000
ru/software/msd/internals.txt · Последние изменения: 2014/10/23 02:06 — root