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
Last revisionBoth sides next 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:47]
– ↷ Links adapted because of a move operation 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.\\
 +Позволяет выжать максимум из канала при передаче клиенту.\\
 +[[ru:software:msd:urls#tcpcc|Очерёдность применения]].
 +
 +
 +===== hostnameList, hostname =====
 +Список доменных имён которые ассоциированы с этим адресом.\\
 +Данная подсекция может быть как в HTTP, тогда она применяется ко всем подсекциям в bindList, так и в отдельной подсекции bind, тогда заданные имена будут считатся локальными только для клиентов которые подключились на указанный в bind адрес.
 +
 +==== hostname ====
 +Доменное имя или "*" - для любого имени.\\
 +IP адреса проверяются автоматически, не имеет смысла добавлять их в этот список.
 +
 +----
 +
 +====== limits ======
 +Лимиты применяемые к параметрам в URL запросов клиентов. См [[ru: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, максимальное ограничено размером кольцевого буфера активного источника.\\
 +Ограничивает значение [[ru:software:msd:urls#precache|precache в URL запросе клиента]].
 +
 +===== sndBlockSizeMin, sndBlockSizeMax =====
 +В килобайтах, минимальное и максимальное значение sndBlockSize. В основном это значение влияет на производительность, как сервера так и клиента. Если указано слишком маленькое значение, то сервер будет часто пытаться отправить данные клиенту вызывая send(), это приведёт к повешению нагрузки на CPU. Если значение слишком большое, то сервер будет отправлять клиенту большие блоки данных, это может привести к тому, что различные пристаки/плееры со слабы процессором будут слишком активно и долго загружать свой CPU чтобы переместить принятые данные из буфера сокета в буфер плеера, что приведёт к заиканиям звука.\\
 +Минимальное значение 0, но на самом деле они ограничено параметром rcvLowat источника.\\
 +На Linux rcvLowat (SO_RCVLOWAT) не работает и в случае мультикаста оно будет равно размеру пакета, а в случае TCP не известно и определяется внутренней логикой ядра.\\
 +Максимальное значение ограничено размером кольцевого буфера активного источника.\\
 +Рекомендую от 16 до 64.\\
 +Ограничивает значение [[ru: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]] для активного источника.\\
 +Так же [[ru:software:msd:urls#precache|задаётся в URL запроса клиента]].\\
 +Имеет [[software:msd:config#precacheMin, precacheMax|настраиваемые лимиты]].
 +
 +===== sndBlockSize =====
 +В килобайтах, значение размера блока отправки по умолчанию.\\
 +Так же [[ru: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.\\
 +[[ru: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 ======
 +Настройки динамически генерируемых стрим хабов.
 +См [[ru: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>
 +См [[ru: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