Site Tools


software:msd:config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:msd:config [2022/02/04 18:47]
– removed - external edit (Unknown date) 127.0.0.1
software:msd:config [2022/02/04 18:52] (current)
root
Line 1: Line 1:
 +Конфиг файл представляет из себя xml файл.\\
 +Размер в килобайтах, время в секундах, кроме параметров для которых явно указаны другие размерности.\\
 +
 +Флаг - значение принимающее 1 или 0.\\
 +Имя всегда начинается с "f" и за ней следует прописная буква.\\
 +Флаг считается установленным, например:
 +<code xml>
 +<fSocketHalfClosed>1</fSocketHalfClosed>
 +<fSocketHalfClosed>y</fSocketHalfClosed>
 +<fSocketHalfClosed>yes</fSocketHalfClosed>
 +<fSocketHalfClosed>t</fSocketHalfClosed>
 +<fSocketHalfClosed>true</fSocketHalfClosed>
 +</code>
 +идентичные записи того что флаг установлен.\\
 +Регистр не важен, те "yes" и "YES" интерпретируются одинаково.
 +
 +Чтобы флаг считался не установленным можно воспользоваться любым значением из примера ниже:
 +<code xml>
 +<fSocketHalfClosed>0</fSocketHalfClosed>
 +<fSocketHalfClosed>n</fSocketHalfClosed>
 +<fSocketHalfClosed>n</fSocketHalfClosed>
 +<fSocketHalfClosed>f</fSocketHalfClosed>
 +<fSocketHalfClosed>false</fSocketHalfClosed>
 +</code>
 +
 +Далее перечисляются секции и настройки которые в них хранятся.
 +
 +----
 +
 +====== log ======
 +Лог файл.
 +
 +<code xml><log>
 + <file>/root/msd/msd.log</file>
 +</log></code>
 +
 +===== file =====
 +Имя файла. Запись производится если в командной строке не указан -v, иначе лог пишется в stdout.
 +
 +----
 +
 +====== threadPool ======
 +Настройки пула потоков.
 +
 +<code xml><threadPool>
 + <threadsCount>0</threadsCount>
 + <fBindToCPU>yes</fBindToCPU>
 + <fCacheGetTimeSyscall>yes</fCacheGetTimeSyscall>
 + <timerGranularity>100</timerGranularity>
 +</threadPool></code>
 +
 +===== threadsCount =====
 +Количество потоков. Если 0 = автоматически по количеству доступных ядер в системе.
 +
 +===== fBindToCPU =====
 +Прикреплять потоки к процессорным ядрам. Если флаг задан то каждый поток будет выполнятся всегда только на одном ядре процессора. Такое поведение позволяет более эффективно использовать процессорный кеш.
 +
 +===== fCacheGetTimeSyscall =====
 +Кешировать системный вызов clock_gettime(). \\
 +clock_gettime() будет вызываться с задержкой указанной в [[software:msd:config#timerGranularity|timerGranularity]].\\
 +На Linux позволяет экономить процессорное время при получении потоков по udp.\\
 +На FreeBSD экономия будет меньше заметна.\\
 +
 +===== timerGranularity =====
 +Задержка между вызовами clock_gettime() для обновления времени.\\
 +Измеряется как 1/1000 секунды. Например: 100 означает 10 раз в секунду, 1000 - один раз в секунду.\\
 +Выставление слишком маленького значения приведёт к повышенной нагрузке на процессор, выставление слишком большого значения к излишнему загрублению расчётов основанных на времени.
 +
 +----
 +
 +====== systemResourceLimits ======
 +Задаются лимиты системных ресурсов для msd.
 +
 +<code xml><systemResourceLimits>
 + <maxOpenFiles>8192</maxOpenFiles>
 + <maxCoreFileSize>unlimited</maxCoreFileSize>
 + <maxMemLock>unlimited</maxMemLock>
 + <processPriority>-10</processPriority>
 +</systemResourceLimits></code>
 +
 +===== maxOpenFiles =====
 +Максимально доступное для msd количество файлов/сокетов/таймеров (для linux).
 +
 +===== maxCoreFileSize =====
 +Разрешить записывать дамп памяти (указанного размера) в случае сбоя приложения.
 +
 +===== maxMemLock =====
 +Максимально доступный объём памяти которую можно блокировать.
 +
 +===== processPriority =====
 +Приоритет выполнения msd в системе: -20 = высокий, 20 = низкий, 0 = по умолчанию.
 +
 +----
 +
 +====== HTTP ======
 +Настройки HTTP сервера.
 +
 +<code xml><HTTP>
 + <skt>
 + <rcvBuf>4</rcvBuf>
 + <sndBuf>256</sndBuf>
 + <rcvTimeout>30</rcvTimeout>
 + <sndTimeout>30</sndTimeout>
 + </skt>
 +
 + <ioBufInitSize>4</ioBufInitSize>
 + <ioBufMaxSize>4</ioBufMaxSize>
 +
 + <bindList>
 + <bind>
 + <address>192.168.1.1:7088</address>
 + <ifName>vlan777</ifName>
 + <backlog>1024</backlog>
 + <fAcceptFilter>no</fAcceptFilter>
 + <congestionControl>htcp</congestionControl>
 + </bind>
 + <bind>
 + <address>[::1]:7088</address>
 + <backlog>2048</backlog>
 + <fAcceptFilter>no</fAcceptFilter>
 + <congestionControl>htcp</congestionControl>
 + <hostnameList>
 + <hostname>localhost</hostname>
 + </hostnameList>
 + </bind>
 + </bindList>
 +
 + <hostnameList>
 + <hostname>netlab.linkpc.net</hostname>
 + <hostname>www.netlab.linkpc.net</hostname>
 + </hostnameList>
 +</HTTP></code>
 +
 +===== ioBufInitSize =====
 +Начальный размер буфера для приёма http запроса от клиента.
 +
 +===== ioBufMaxSize =====
 +Максимальный размер буфера для приёма http запроса от клиента.
 +
 +===== skt =====
 +Настройки сокета клиента.
 +
 +==== rcvBuf ====
 +Максимальный размер буфера для приёма (SO_RCVBUF).
 +
 +==== sndBuf ====
 +Максимальный размер буфера для отправки (SO_SNDBUF).
 +
 +==== rcvTimeout ====
 +Таймаут приёма запроса от клиента.
 +
 +==== sndTimeout ====
 +Таймаут отправки ответа клиенту.
 +
 +===== bindList, bind =====
 +bindList содержит секции bind, в которых описывается на каких адресах принимать запросы от клиентов и дополнительные параметры.
 +
 +==== address ====
 +IPv4Address:Port или [IPv6Address]:Port на котором принимать клиентские запросы.
 +
 +==== ifName ====
 +Имя интерфейса, не обязательно, если задано то <address> IPv4 или IPv6 заменяется соответствующим IPv4 или IPv6 адресом на указанном интерфейсе перед вызовом bind(). Если на указанном интерфейсе нет IP адреса то выдаётся ошибка, если адресов несколько - используется первый полученный.
 +
 +==== backlog ====
 +Максимальное количество ожидающих в очереди на подключение (listen(..., backlog) ).
 +
 +==== fAcceptFilter ====
 +Использовать SO_ACCEPTFILTER(httpready) для FreeBSD (accf_http модуль должен быть загружен) либо TCP_DEFER_ACCEPT под linux.\\
 +Использование данного флага позволяет уменьшить использование CPU при большом количестве HTTP запросов.
 +
 +==== congestionControl ====
 +TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 +Позволяет выжать максимум из канала при передаче клиенту.\\
 +[[software:msd:urls#tcpcc|Очерёдность применения]].
 +
 +
 +===== hostnameList, hostname =====
 +Список доменных имён которые ассоциированы с этим адресом.\\
 +Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес.
 +
 +==== hostname ====
 +Доменное имя или "*" - для любого имени.\\
 +IP адреса проверяются автоматически, не имеет смысла добавлять их в этот список.
 +
 +----
 +
 +====== limits ======
 +Лимиты применяемые к параметрам в URL запросов клиентов. См [[software:msd:urls#Дополнительные параметры|URLs, Дополнительные параметры]].
 +
 +<code xml><limits>
 + <precacheMin>0</precacheMin>
 + <precacheMax>8192</precacheMax>
 + <sndBlockSizeMin>32</sndBlockSizeMin>
 + <sndBlockSizeMax>512</sndBlockSizeMax>
 +</limits></code>
 +
 +===== precacheMin, precacheMax =====
 +В килобайтах, минимальное и максимальное значение precache доступное клиенту. Минимальное не может быть меньше 0, максимальное ограничено размером кольцевого буфера активного источника.\\
 +Ограничивает значение [[software:msd:urls#precache|precache в URL запросе клиента]].
 +
 +===== sndBlockSizeMin, sndBlockSizeMax =====
 +В килобайтах, минимальное и максимальное значение sndBlockSize. В основном это значение влияет на производительность, как сервера так и клиента. Если указано слишком маленькое значение, то сервер будет часто пытаться отправить данные клиенту вызывая send(), это приведёт к повешению нагрузки на CPU. Если значение слишком большое, то сервер будет отправлять клиенту большие блоки данных, это может привести к тому, что различные пристаки/плееры со слабы процессором будут слишком активно и долго загружать свой CPU чтобы переместить принятые данные из буфера сокета в буфер плеера, что приведёт к заиканиям звука.\\
 +Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\
 +На Linux rcvLowat (SO_RCVLOWAT) не работает и в случае мультикаста оно будет равно размеру пакета, а в случае TCP не известно и определяется внутренней логикой ядра.\\
 +Максимальное значение ограничено размером кольцевого буфера активного источника.\\
 +Рекомендую от 16 до 64.\\
 +Ограничивает значение [[software:msd:urls#blocksize|blocksize в URL запросе клиента]].
 +
 +----
 +
 +====== hubProfileList, hubProfile ======
 +hubProfileList содержит список шаблонов настроек Stream Hub - hubProfile, каждому hubProfile присваивается уникальное имя.
 +
 +<code xml><hubProfileList>
 + <hubProfile>
 + <name>default</name>
 + <fZeroCliPersistent>no</fZeroCliPersistent>
 + <fZeroSrcBitratePersistent>no</fZeroSrcBitratePersistent>
 + <fPrecacheWait>no</fPrecacheWait>
 + <fUsePollingForSend>no</fUsePollingForSend>
 + <fDropSlowClients>no</fDropSlowClients>
 + <fMPEG2TSAnalyzing>no</fMPEG2TSAnalyzing>
 + <fSocketHalfClosed>no</fSocketHalfClosed>
 + <fSocketTCPNoDelay>no<fSocketTCPNoDelay>
 + <fSocketTCPNoPush>no</fSocketTCPNoPush>
 + <fZeroCopyOnSend>no</fZeroCopyOnSend>
 + <ringBufSize>32768</ringBufSize>
 + <ringBufStorePath>/tmp</ringBufStorePath>
 + <zeroCliTimeout>3</zeroCliTimeout>
 + <errorRateInterval>60</errorRateInterval>
 + <errorRateMax>5</errorRateMax>
 + <skt>
 + <sndBuf>512</sndBuf>
 + <sndTimeout>30</sndTimeout>
 + <congestionControl>htcp</congestionControl>
 + </skt>
 + <precache>4096</precache>
 + <sndBlockSize>64</sndBlockSize>
 + <headersList>
 + <header>Pragma: no-cache</header>
 + <header>Content-Type: video/mpeg</header>
 + <header>ContentFeatures.DLNA.ORG: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000</header>
 + <header>TransferMode.DLNA.ORG: Streaming</header>
 + </headersList>
 + </hubProfile>
 +</hubProfileList></code>
 +
 +===== name =====
 +Уникальное имя для hubProfile.
 +
 +===== fZeroCliPersistent =====
 +Продолжать работать даже если все клиенты отключились. Для каналов заданных в конфиге всегда выставлен. Если флаг не выставлен то хаб уничтожается по истечении времени [[software:msd:config#zeroCliTimeout|zeroCliTimeout]].
 +
 +===== fZeroSrcBitratePersistent =====
 +Продолжать работать даже если все источники ничего не вещают. Для каналов заданных в конфиге всегда выставлен.
 +
 +===== fPrecacheWait =====
 +Ожидать пока в кольцевом буфере накопится заданное в precache параметре конфига/запроса количество данных чтобы отправить их клиенту.\\
 +Используется чтобы гарантировать что только что подключённый клиент сможет сразу получить указанное количество данных.
 +
 +===== fUsePollingForSend =====
 +Добавлять сокет клиента в kqueue/epoll.\\
 +Клиенты в kqueue/epoll добавляются если количество данных которые нужно отправить клиенту из кольцевого буфера больше чем sndBlock для данного клиента.\\
 +Обычно это случается во время отправки прекеша, если у клиента проблемы с задеркажми/потерей пакетов и он медленно принимает. Так же есть клиенты с маленьким буфером сокета (обычно VLC), они всегда висят в поллинге тк не могут принять всех данных которые для них доступны.
 +
 +===== fDropSlowClients =====
 +Отключать клиентов которые медленно принимают данные.
 +Если флаг выключен то клиентам будет пере запускаться вещание с пропуском/потерей данных в размере: [[software:msd:config#zeroCliTimeout|ringBufSize]] - [[software:msd:config#precache|precache]].
 +
 +===== fMPEG2TSAnalyzing =====
 +Форсировать выставление флага для всех источников данного хаба. Если флаг выставлен то поток MPEG2-TS подвергается анализу: выделяются служебные пакеты, пакеты с данными, строятся PSI таблицы, подсчитывается количество пакетов, CC ошибок и прочих типов ошибок для каждого PID в потоке, лишние PID (на которые нет ссылок в PAT+PMT таблицах) отбрасываются.\\
 +Так же этот флаг выключает отсылку всех служебных MPEG2-TS данных новым клиентам перед отправкой данных из кольцевого буфера, что позволяет клиентам не отбрасывать пакеты в поисках пакетов со служебной информацией.\\
 +Побочный эффект: дополнительная нагрузка на процессор и увеличение потребления памяти, не значительное на фоне памяти отведённой для кольцевого буфера [[software:msd:config#ringBufSize|ringBufSize]].
 +
 +===== fSocketHalfClosed =====
 +Вызывать shutdown(SHUT_RD) для клиентов.\\
 +Явно указывает клиенту что больше данные передавать на сервер нельзя.\\
 +Некоторые клиенты ошибочно принимают за закрытие соединения и отключаются.
 +
 +===== fSocketTCPNoDelay =====
 +Выставлять TCP_NODELAY флаг на сокет клиента.
 +
 +===== fSocketTCPNoPush =====
 +Выставлять TCP_NOPUSH FreeBSD / TCP_CORK Linux флаг на сокет клиента.
 +
 +===== fZeroCopyOnSend =====
 +ZCoS\\
 +Использовать sendfile() вместо sendmsg().\\
 +Использование sendfile() позволяет уменьшить нагрузку на процессор при отправке данных клиентам за счёт уменьшения количества операций копирования, всю работу берёт на себя ядро операционной системы.
 +см так же [[software:msd:config#ringBufStorePath|ringBufStorePath]]\\
 +Эффект особенно заметен на качественный сетевых адаптерах с включённым offloading опциями.
 +
 +===== flagMergeSources =====
 +Экспериментальная возможность объединения потоков разных источников с целью коррекции ошибок, запланировано на будущее.
 +
 +===== ringBufSize =====
 +В килобайтах, форсировать выставление размера кольцевого буфера для всех источников данного хаба.
 +
 +===== ringBufStorePath =====
 +Путь к файлам где хранить файлы с содержимым кольцевого буфера.\\
 +Актуально только когда выставлен флаг [[software:msd:config#fZeroCopyOnSend|fZeroCopyOnSend]]\\
 +Специальное значение: "shm" - использовать posix shared memory (shm_open()).\\
 +Рекомендуется хранить файлы в tmpfs.\\
 +
 +==== Особенности ====
 +Если msd аварийно завершился то требуется ручное удаление файлов кольцевых буферов, кроме shm под FreeBSD 10 и выше.\\
 +
 +=== Особенности FreeBSD ===
 +shm можно использовать только начиная с версии 10.\\
 +
 +=== Особенности Linux ===
 +При использовании shm файлы хранятся в /run/shm, чей размер обычно ограничен. На ubuntu 12.04 - 4 гигабайта.\\
 +
 +
 +===== zeroCliTimeout =====
 +В секундах, время для уничтожения хаба без клиентов, если не выставлен флаг [[software:msd:config#fZeroCliPersistent|fZeroCliPersistent]].
 +
 +===== errorRateInterval =====
 +В секундах, форсировать выставление интервала времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
 +
 +===== errorRateMax =====
 +Форсировать выставление максимального количества ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]] для всех источников данного хаба.
 +
 +===== precache =====
 +В килобайтах, значение прекеша по умолчанию. Указывает сколько килобайт будет отправлено новому клиенту сразу после подключения из кольцевого буфера источника. Клиент может переопределить это значение в URL запроса. Не может превышать [[software:msd:config#ringBufSize|ringBufSize]] для активного источника.\\
 +Так же [[software:msd:urls#precache|задаётся в URL запроса клиента]].\\
 +Имеет [[software:msd:config#precacheMin, precacheMax|настраиваемые лимиты]].
 +
 +===== sndBlockSize =====
 +В килобайтах, значение размера блока отправки по умолчанию.\\
 +Так же [[software:msd:urls#blocksize|задаётся в URL запроса клиента]].\\
 +[[software:msd:config#sndBlockSizeMin, sndBlockSizeMax|Подробное описание параметра см в секции limits]].
 +
 +===== skt =====
 +Настройки клиентских сокетов
 +
 +==== sndBuf ====
 +Максимальный размер буфера для отправки клиенту (SO_SNDBUF).
 +
 +==== sndTimeout ====
 +Таймаут отправки данных клиенту.
 +
 +==== congestionControl ====
 +TCP Congestion Control Algoritm. (TCP_CONGESTION) Алгоритм контроля перегрузки канала в TCP.\\
 +Позволяет выжать максимум из канала при передаче клиенту.\\
 +Переопределяет ранее заданные значения в URL запроса клиента, секции HTTP сервер, настройках OS.\\
 +[[software:msd:urls#tcpcc|Очерёдность применения]].
 +
 +===== headersList =====
 +
 +==== header ====
 +Дополнительный HTTP заголовок и его значение добавляемые перед отправкой клиенту данных из кольцевого буфера.\\
 +Такие заголовки требуются некоторым UPnP/DLNA клиентам для работы.
 +
 +----
 +
 +====== sourceProfileList, sourceProfile ======
 +sourceProfileList содержит список шаблонов настроек источников потока - sourceProfile, каждому sourceProfileприсваивается уникальное имя.
 +
 +<code xml><sourceProfileList>
 + <sourceProfile>
 + <name>multicast-udp-default</name>
 + <fMPEG2TSAnalyzing>no</fMPEG2TSAnalyzing>
 + <ringBufSize>0</ringBufSize>
 + <errorRateInterval>0</errorRateInterval>
 + <errorRateMax>0</errorRateMax>
 + <skt>
 + <rcvBuf>2048</rcvBuf>
 + <rcvLowat>48</rcvLowat>
 + <rcvTimeout>2</rcvTimeout>
 + </skt>
 + <!-- Source connection specific info. -->
 + <udp>
 + <address>239.0.0.22:1234</address>
 + </udp>
 + <multicast>
 + <ifName>vlan777</ifName>
 + </multicast>
 + </sourceProfile>
 + <sourceProfile>
 + <name>tcp-http-default</name>
 + <fMPEG2TSAnalyzing>yes</fMPEG2TSAnalyzing>
 + <ringBufSize>0</ringBufSize>
 + <errorRateInterval>0</errorRateInterval>
 + <errorRateMax>0</errorRateMax>
 + <skt>
 + <rcvBuf>2048</rcvBuf>
 + <rcvLowat>48</rcvLowat>
 + <rcvTimeout>30</rcvTimeout>
 + </skt>
 + <!-- Source connection specific info. -->
 + <tcp>
 + <remonteHostname>SomeServer.tv:7088</remonteHostname>
 + <connectTimeout>5</connectTimeout>
 + <reconnectInterval>5</reconnectInterval>
 + <reconnectCount>5</reconnectCount>
 + <fSocketHalfClosed>no</fSocketHalfClosed>
 + </tcp>
 + <http>
 + <urlPath>udp/239.0.0.6:10000</urlPath>
 + <headersList>
 + <header>Accept: */*</header>
 + <header>User-Agent: NSPlayer/7.10.0.3059</header>
 + <header>getcontentFeatures.dlna.org: 1</header>
 + </headersList>
 + </http>
 + </sourceProfile>
 +</sourceProfileList></code>
 +
 +===== name =====
 +Уникальное имя для sourceProfile.
 +
 +===== fMPEG2TSAnalyzing =====
 +Если флаг выставлен то поток MPEG2-TS подвергается анализу. [[software:msd:config#fMPEG2TSAnalyzing|Подробнее в секции hubProfile]].
 +
 +===== ringBufSize =====
 +В килобайтах, размер кольцевого буфера. Не рекомендуется делать меньше, чем нужно для буферизации 2-5 секунд потока. Больше 32 мегабайт имеет смысл только для компенсации очень больших потерь во время приёма от HTTP источника. Меньше 4-8 мегабайт целесообразно ставить для радиостанций.
 +
 +===== errorRateInterval =====
 +В секундах, интервал времени для подсчёта ошибок если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]].
 +
 +===== errorRateMax =====
 +Максимальное количество ошибок за интервал времени если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]], по достижении на источнике выставляется флаг и может быть произведено переключение на следующий по списку источник.
 +
 +===== skt =====
 +Настройки принимающего сокета источника.
 +
 +==== rcvBuf ====
 +Максимальный размер буфера для приёма (SO_RCVBUF).
 +
 +==== rcvLowat ====
 +Минимальный размер данных в буфере сокета для начала считывания в кольцевой буфер и анализа (если задан флаг [[software:msd:config#fMPEG2TSAnalyzing|fMPEG2TSAnalyzing]]) (SO_RCVLOWAT).\\
 +На Linux данный параметр игнорируется ядром и чтение для udp осуществляется по пакетно, что ощутимо повышает нагрузку.\\
 +Для tcp чтение осуществляется по мере поступления данных.\\
 +Для Linux данный параметр реализован в программе, что позволило немножко сэкономить ресурсы процессора.
 +==== rcvTimeout ====
 +Таймаут приёма данных, после достижении источник считается не работающим и либо производится попытка переключения на другой источник либо клиенты отключены а хаб уничтожен, зависит от настроек хаба: флаг [[software:msd:config#fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]]
 +
 +===== udp =====
 +Настройки и информация для подключения UDP источника.
 +
 +==== address ====
 +IPv4Address:Port или [IPv6Address]:Port. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
 +
 +===== multicast =====
 +Настройки и информация для подключения multicast источника. Так же должны присутствовать настройки для UDP.
 +
 +==== ifName ====
 +Имя интерфейса для подписки на multicast. Используется как значение по умолчанию.
 +
 +===== tcp =====
 +Настройки и информация для подключения TCP источника.
 +
 +==== remonteHostname ====
 +IPv4Address:Port или [IPv6Address]:Port. Адрес для tcp, tcp-http подключения к источнику. Данная подсекция в секции sourceProfile даётся только для примера, поскольку для динамического хаба этот параметр извлекается из URL запроса, а для статического хаба подразумевается что он будет задан в настрокойках источника канала.
 +
 +==== connectTimeout ====
 +В секундах, таймаут подключения.
 +
 +==== reconnectInterval ====
 +В секундах, задержка перед следующей попыткой подключения.
 +
 +==== reconnectCount ====
 +Количество попыток подключения.
 +
 +==== fSocketHalfClosed ====
 +Использовать полу закрытые соединения (Half Closed Connections).\\
 +Вызывать shutdown(SHUT_WR) сразу после: подключения (для TCP) / отправки запроса (HTTP).\\
 +Позволяет уведомить сетевой стёк ОС о том что отправки данных больше не будет и можно освободить/не резервировать буфер сокета для отправки данных.\\
 +Некоторые реализации HTTP серверов и HTTP прокси не поддерживают полу закрытые соединения.
 +
 +===== http =====
 +Настройки и информация для подключения HTTP источника. Так же должны присутствовать настройки для TCP.
 +
 +==== urlPath ====
 +Строка для GET запроса: GET /%urlPath%
 +
 +==== headersList ====
 +Дополнительные HTTP заголовки и их значения добавляемые в запрос.
 +
 +----
 +
 +====== streamProxy ======
 +Настройки динамически генерируемых стрим хабов.
 +См [[software:msd:index#Виды Stream Hub|Виды Stream Hub]]
 +
 +<code xml><streamProxy>
 + <multicast>
 + <fEnable>no</fEnable>
 + <hubProfileName>default</hubProfileName>
 + <sourceProfileName>multicast-udp-default</sourceProfileName>
 + </multicast>
 + <http>
 + <fEnable>no</fEnable>
 + <hubProfileName>default</hubProfileName>
 + <sourceProfileName>tcp-http-default</sourceProfileName>
 + </http>
 + <transparent>
 + <fEnable>no</fEnable>
 + <hubProfileName>default</hubProfileName>
 + <sourceProfileName>tcp-http-default</sourceProfileName>
 + </transparent>
 +</streamProxy></code>
 +
 +===== Общие настройки динамических Stream Hub =====
 +Эти настройки одинаковые для всех динамических Stream Hub.
 +
 +==== fEnable ====
 +Разрешить использование динамическим прокси.
 +
 +==== hubProfileName ====
 +Имя профиля с настройками Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]]
 +
 +==== sourceProfileName ====
 +Имя профиля с настройками источника, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]]
 +
 +----
 +
 +====== channelList ======
 +В секции содержится описание каналов (Stream Hub + источники).\\
 +Описание каналов может быть вынесено во множество внешних файлов.
 +<code xml><channelList>
 + <includeFile>-/root/msd/msd_channels.conf</includeFile>
 + <includeFile>-/root/msd/msd_channels2.conf</includeFile>
 + <channel>
 + <name>Test1.ts</name>
 + <hubProfileName>default</hubProfileName>
 + <precache>8192</precache>
 + <skt>
 + <sndBuf>1024</sndBuf>
 + </skt>
 + <sourceList>
 + <source>
 + <type>tcp-http</type>
 + <sourceProfileName>tcp-http-default</sourceProfileName>
 + <tcp> <!-- For: tcp and tcp-http. -->
 + <remonteHostname>SomeServer.tv:7088</remonteHostname>
 + </tcp>
 + <http>
 + <urlPath>udp/239.0.0.116:4000</urlPath>
 + </http>
 + </source>
 + <source>
 + <type>multicast-udp</type>
 + <sourceProfileName>multicast-udp-default</sourceProfileName>
 + <fMPEG2TSAnalyzing>yes</fMPEG2TSAnalyzing>
 + <udp>
 + <address>239.0.0.2:1234</address>
 + </udp>
 + <multicast>
 + <ifName>vlan777</ifName>
 + </multicast>
 + </source>
 + <source>
 + <type>multicast-udp</type>
 + <sourceProfileName>multicast-udp-default</sourceProfileName>
 + <udp>
 + <address>239.0.0.3:1234</address>
 + </udp>
 + <multicast>
 + <ifName>vlan777</ifName>
 + </multicast>
 + </source>
 + </sourceList>
 + </channel>
 +</channelList>
 +</code>
 +
 +===== includeFile =====
 +путь к файлу с каналами. Параметр не обязательный. Можно использовать много раз для загрузки каналов из множества файлов.
 +
 +===== channel =====
 +Описание канала.\\
 +Включается в себя Stream Hub и как минимум один источник.\\
 +Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек Stream Hub, которые даны в [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]].\\
 +Порядок загрузки параметров Stream Hub:
 +  - Значения по умолчанию встроенные в msd
 +  - Содержимое шаблона настроек Stream Hub на которое указывает параметр hubProfileName
 +  - Значения определённые в этой секции
 +В примере выше значения precache и skt/sndBuf заменяют ранее загруженные одноимённые значения из шаблона настроек Stream Hub с именем default.\\
 +Флаги не могут быть сброшены, только установлены.\\
 +Флаги [[software:msd:config#fZeroCliPersistent|fZeroCliPersistent]] и [[software:msd:config#fZeroSrcBitratePersistent|fZeroSrcBitratePersistent]] устанавливаются всегда.
 +
 +
 +==== name ====
 +Уникальное имя канала.\\
 +По этому имени клиенты будут подключатся к Stream Hub.\\
 +Если имя начинается с "/" то оно остаётся без изменений, в противном случае к нему добавляется путь: /channel/ \\
 +Можно именовать каналы произвольно, например так: <code>/udp/224.4.4.4:1234</code>
 +См [[software:msd:urls#/channel/ИМЯ_КАНАЛА|URLs]]\\
 +Рекомендую использовать окончание ".ts", это требуется некоторым плеерам, типа WMP, для корректной работы.\\
 +
 +==== hubProfileName ====
 +Имя шаблона настроек Stream Hub, см [[software:msd:config#hubProfileList, hubProfile|hubProfileList, hubProfile]]
 +
 +==== sourceList, source ====
 +Список настроек источников потока.\\
 +Настройки источника потока.\\
 +Особенность этой секции в том, что здесь можно записать любые параметры шаблона настроек источника потока, которые даны в [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]].\\
 +Порядок загрузки параметров источника потока:
 +  - Значения по умолчанию встроенные в msd
 +  - Содержимое шаблона настроек источника потока на которое указывает параметр sourceProfileName
 +  - Значения определённые в этой секции
 +В примере выше флаг fMPEG2TSAnalyzing указывает что анализатор потока всегда включён для данного источника, не зависимо от наличия этого флага в шаблоне настроек источника.\\
 +Флаги не могут быть сброшены, только установлены.\\
 +
 +=== type ===
 +Тип источника потока, доступны следующие типы:
 +  * udp
 +  * udp-rtp
 +  * multicast-udp
 +  * multicast-udp-rtp
 +  * tcp
 +  * tcp-http
 +  * tcp-http-hls - не реализовано
 +
 +=== sourceProfileName ===
 +Имя шаблона источника потока, см [[software:msd:config#sourceProfileList, sourceProfile|sourceProfileList, sourceProfile]].\\
  
software/msd/config.txt · Last modified: 2022/02/04 18:52 by root