2. Установка, конфигурация и использование¶
Для работы micromanager необходимо наличие установленных библиотек libjsonrpc, libjson.
Micromanager, а также все сопутствующие пакеты и необходимые библиотеки совместимых версий, поставляются в виде установочных deb-пакетов и устанавливаются утилитой dpkg. См. Где взять.
Для запуска micromanager используется init.d скрипт: /etc/init.d/micromanager:
$ /etc/init.d/micromanager
Usage: /etc/init.d/micromanager {start|stop|restart|force-reload|reload}
Файлы логов по умолчанию сохраняются в /var/log/micromanager/micromanager.log,
включена ротация логов через logrotate.d
2.1 Где взять¶
- Для всех
- Скачать необходимые инсталляционные пакеты можно в официальном техническом сообществе Microimpuls по ссылке http://forum.micro.im/ в разделе “Дистрибутивы и обновления ПО”.
- Для инженеров Microimpuls
- При установке ПО на сервер через систему оркестровки все необходимые установочные пакеты актуальных версий скачиваются из репозитория автоматически.
2.2 Конфигурация¶
Файл конфигурации находится в /etc/micromanager/micromanager.conf,
задаётся в формате JSON. Пример:
{
"log-syslog": false,
"log-path": "/var/log/micromanager/micromanager.log",
"log-facility": 0,
"log-verbose-level": 4,
"log-foreground": true,
"log-state-path": "/var/log/micromanager/state.log",
"log-state-period": 0,
"json-rpc-enabled": true,
"json-rpc-listen-host": "0.0.0.0",
"json-rpc-listen-port": 7089,
"run-cmd": "%transcoder% -i %src% %ffmpeg-params% -f mpegts udp://@%dsthost%:%dstport%?pkt_size=%payloadsize%",
"run-cmd-presets": [
{
"name": "custom-preset",
"run-cmd": "/usr/local/bin/ffmpeg -i %src% %ffmpeg-params% -f mpegts udp://@%dsthost%:%dstport%?pkt_size=%payloadsize%"
}
],
"run-link-stderr": false,
"transcoder-path": "/usr/local/bin/ffmpeg",
"ffprobe-path": "/usr/local/bin/ffprobe",
"vod-directory": "/opt/storage/vod",
"vod-ingest-directory": "/opt/storage/vod_ingest/",
"vod-ingestion-path-checking-period": 15,
"vod-ffmpeg-use-progress": false,
"vod-default-naming-template": "/%preset_name%/%src_path_wo_ext%.mp4",
"vod-ingestion-limit": 10,
"vod-distribution-limit": 10,
"vod-archive-limit": 10,
"process-memory-limit": 512000,
"process-cpu-limit": 0,
"processes-to-watch": [
{ "name": "ffmpeg", "memory-limit": 512000, "cpu-limit": 150 },
],
"low-bitrate-limit": 150000,
"low-bitrate-checks": 30,
"fail-max-probing": 5,
"priority": 0,
"streams": [
{
"name": "Stream 1",
"enabled": true,
//"timeout": 0, // seconds
//"autostart": true,
//"run-cmd-preset": "",
//"run-cmd": "",
//"process-memory-limit": 1024000,
//"process-cpu-limit": 250,
"priority": 1,
"src": [
{
"name": "ABS-1 stream 1",
"enabled": true,
"params": [
{ "name": "src", "value": "udp://@239.1.1.1:1234" },
{ "name": "ffmpeg-params", "value": "" },
// other keys for replacement
]
}
],
"dst": "239.0.0.5 1234 multicast udp",
//"m3u8-playlist": "/tmp/playlist.m3u8",
"payload-size": 1316
}
]
}
2.2.1 Основные параметры¶
- log-syslog
bool - Использовать ли службу syslogd для записи логов в /var/log/syslog. Не рекомендуется включать при интенсивном логировании.
- log-facility
int - Тег в syslog.
- log-path
str - Путь до лог-файла для логирования напрямую без syslogd.
- log-verbose-level
int - Уровень логирования от 0 до 5, 5 - максимальный DEBUG уровень.
- log-foreground
bool - Вывод лога в stdout.
- log-state-period
int - Период записи лога состояния в минутах. При значении 0 запись отключается. По умолчанию 0.
- log-state-path
str - Путь до файла в который будет записываться лог состояния.
- json-rpc-enabled
bool - Включает интерфейс JSON RPC API. Позволяет осуществлять мониторинг и управление процессами.
- json-rpc-listen-host
str - Адрес интерфейса для ожидания входящих подключений к JSON RPC API. Значение “0.0.0.0” означает слушать на всех интерфейсах.
- json-rpc-listen-port
int - Номер порта TCP для JSON RPC API, по умолчанию 7089.
- run-cmd
str - Строка запуска процесса транскодирования, например ffmpeg. В строке запуска можно использовать переменные вида
%param%, вместо этих переменных в момент запуска транскодера будут подставлены соответствующие значения, см. params. Вместо переменной%transcoder%будет подставлено значение transcoder-path. - run-cmd-presets
list - Дополнительные варианты команд запуска транскодера. Формат пресета команды описан в run-cmd-presets.
- run-link-stderr
bool С версии 1.4.5
Для перехвата сообщений об ошибках ffmpeg рекомендуется использовать перенаправление вывода с параметром -nostats вместо данной функции.
Включает перехват потока stderr при запуске процесса. Если при завершении процесс вернёт код, отличный от 0, то из stderr будет прочитано не более 500 байт и записано в лог. Перехват производится только для процессов инжестирования и дистрибьюции. По умолчанию false.
- transcoder-path
str - Путь до процесса транскодера, например /usr/local/bin/ffmpeg.
- ffprobe-path
str - Путь до ffprobe или avprobe. Используется для определения мета-информации о видео-файле для VOD.
- vod-directory
str - Путь до директории VOD, в которой размещаются файлы видеотеки. По умолчанию /var/vod/.
- vod-ingest-directory
str - Путь до директории инжестирования. В этой директории с заданной периодичностью micromanager проверяет появление новых файлов и запускает для них процесс инжестирования - добавления в каталог VOD. По умолчанию /var/vod_ingest/.
- vod-delete-after-autoingestion
bool С версии 1.4.3
Если true, то после успешного автоматического инжестирования исходный файл будет удаляться. Удаления также не будет в случае, если была какая-либо ошибка в ходе дистрибьюции. По умалчанию false.
- vod-ingestion-path-checking-period
int - Период проверки директории vod-ingest-directory, задаётся в секундах. При значении 0 автоматическая проверка не осуществляется, однако возможен запуск инжестирования через API.
- vod-ffmpeg-use-progress
bool - Включает экспериментальную возможность использования параметра -progress для получения более подробной информации о процессе инжестирования.
- vod-default-naming-template
str Шаблон имени файла в каталоге VOD после инжестирования. Доступны переменные:
%preset_name%- название пресета из run-cmd-presets, использоуемого при инжестировании, либо default, если был использован пресет по-умолчанию;%src_full_path_wo_ext%- путь до исходного файла внутри каталога vod-ingest-directory без расширения;%src_full_path%- полный путь до исходного файла внутри каталога vod-ingest-directory;%src_name%- имя исходного файла без расширения;%src_dir%- директория, в которой находится исходный файл относительно каталога vod-ingest-directory.
Пример:
/%preset_name%/%src_full_path_wo_ext%.ts.- vod-distribution-enabled
bool С версии 1.4.5
Включает дистрибьюцию ассета после успешного завершения инжестирования. По умолчанию false.
- vod-default-distribution-template
str С версии 1.4.5
Шаблона процесса дистрибьюции. По умолчанию
"scp %parameters% %full_path% %address%:%destination%". Доступны следующие переменные: -%file_name%- имя ассета без пути, сгенерированное при запуске инжестирования; -%full_path%- полный путь до инжестированного ассета, сгенерированный при запуске из шаблона именования, совпадает с параметром %dstpath% в шаблоне команды инжестирования; -%preset_name%- имя пресета, использованного при инжестировании, или default если был использован пресет по-умолчанию; -%address%- поле адреса; -%parameters%- дополнительные параметры команды.Параметры
%parameters%,%address%и%destination%- vod-distribution-addresses
list С версии 1.4.5
Список адресов дистрибьюции. Формат описан в vod-distribution-addresses.
- vod-ingestion-limit
int С версии 1.7.0
Максимальное количество одновременно выполняемых задач инжестирования. Если -1, то неграниченно. По умолчанию -1.
- vod-distribution-limit
int С версии 1.7.0
Максимальное количество одновременно выполняемых задач дистрибьюции. Если -1, то неграниченно. По умолчанию -1.
- vod-archive-limit
int С версии 1.7.0
Если больше нуля, то определяет количество последних выполненных или отменнённых задач, о которых micromanager будет сохранять информацию. По умолчанию 0.
- process-memory-limit
int - Лимит потребляемой оперативной памяти в байтах для основного процесса micromanager. По достижению этого лимита процессы транскодирования будут перезапущены.
- process-cpu-limit
int - Лимит потребляемых ресурсов процессора в процентах для основного процесса micromanager. По достижению этого лимита процессы транскодирования будут перезапущены.
- processes-to-watch
list - Список процессов, за потреблением CPU и Memory которых будет следить micromanager. Формат описан в processes-to-watch.
- low-bitrate-limit
int - Порог битрейта выходного потока в bps, ниже которого micromanager примет решение о том, что возникла ошибка и перезапустит процесс транскодера.
- low-bitrate-checks
int - Количество проверок битрейта выходного потока ниже порогового значения, перед тем как принять решение об ошибке.
- fail-max-probing
int - Количество проверок отсутствия выходного потока, после которого процесс транскодирования будет перезапущен.
- priority
int - Приоритет процесса в ОС, 0 - автоматический приоритет по выбору ОС.
- streams
list - Список транскодируемых потоков. Для каждого потока будет запущен инстанс транскодера по команде run-cmd, либо, если для потока определен run-cmd-preset, то команда из соответствующего пресета. Формат описан в streams.
- score-max-cpu-la1
float С версии 1.4.5
Максимальное значение средней загрузки вычислительных ресурсов за 1 минуту (CPU LA1).
2.2.2 Описание параметра run-cmd-presets¶
- name
str - Название пресета, имя default является зарезервированным и не рекомендуется к использованию.
- run-cmd
str - Команда запуска, идентично run-cmd.
- naming-template
str - Шаблон имени выходного файла, если пресет используется для транскодирования файла при инжестировании. Идентично vod-default-naming-template. Если данный параметр не задан для пресета, то будет использоваться шаблон по-умолчанию.
- distribution-template
str - Шаблона процесса дистрибьюции. Аналогично vod-default-distribution-template. Если данный параметр не задан для пресета, то будет использоваться шаблон по-умолчанию.
Примечание: пресет по умолчанию - это пресет, составленный из параметров run-cmd, vod-default-naming-template и vod-default-distribution-template. Имеет имя default и может быть использован при инжестировании.
2.2.3 Описание параметра processes-to-watch¶
- name
str - Имя процесса, например ffmpeg. Отслеживание происхдит через команду
ps. - memory-limit
int - Лимит потребляемой оперативной памяти для процесса, задаётся в байтах. По достижению лимита процесс будет убит.
- cpu-limit
int - Лимит потребляемых ресурсов процессора для процесса, задаётся в процентах. По достижению лимита процесс будет убит.
2.2.4 Описание параметра streams¶
Каждому потоку присваивается номер в порядке упоминания его в конфигурации, причём самый первый поток имеет номер 0. Данный номер используется в лог-файле, а также при управлении потоками через API.
- name
str - Название потока.
- enabled
bool - Флаг, означающий включен ли процесс транскодирования потока. При значении false процесс для данного потока не будет запущен. По умолчанию true.
- autostart
bool - Определяет, необходимо ли автоматически запускать процесс транскодирования, либо запускать только по запросу через API. Используется для экономии ресурсов транскодера. По умолчанию true.
- timeout
int - Определяет таймаут в секундах, после которого в случае неактивности (отсутствия запросов на запуск потока через API) процесс будет остановлен. По умолчанию 0.
- run-cmd-preset
str - Имя пресета команды запуска транскодера из списка run-cmd-presets. По умолчанию - пустое значение, используется команда из run-cmd.
- run-cmd
str - Переопределяет параметр run-cmd для конкретного процесса данного потока. По умолчанию - пустое значение.
- process-memory-limit
int - Переопределяет параметр process-memory-limit для конкретного процесса данного потока. По умолчанию не определен.
- process-cpu-limit
int - Переопределяет параметр process-cpu-limit для конкретного процесса данного потока. По умолчанию не определен.
- priority
int - Переопределяет параметр priority для конкретного процесса данного потока. По умолчанию не определен.
- src
list - Список источников для потока. При задании нескольких источников micromanager будет переключать транскодер на следующий источник при возникшей проблеме в текущем. Механизм можно использовать для резервирования. Формат описан в src.
- dst
str - Выходной адрес потока. За данным потоком micromanager будет следить, контролируя таким образом работу транскодера. Формат dst описан в документации microporter/libmedia
- m3u8-playlist
str - Путь до m3u8-плейлиста, который генерирует сегментер. Если не задан dst, но задан этот параметр, то micromanager будет осуществлять проверку существования плейлиста и его обновления новыми чанками и на основании этого делать вывод статусе потока.
- payload-size
int - Размер одного пакета Multicast-потока. По умолчанию 1316.
2.2.4.1 Описание параметра src¶
- name
str - Название источника.
- enabled
bool - Флаг, определяющий, включен ли источник. По умолчанию true.
- params
list - Список параметров для процесса транскодера. Значения параметров подставляются в строку запуска транскодера в виде
переменных
%название_параметра%. Формат описан в params.
2.2.4.2 Описание поля params¶
- name
str - Название параметра.
- value
str - Значение параметра.
2.2.5 Описание параметра vod-distribution-addresses¶
- enabled
bool - Включает использование данного адреса при дистрибьюции.
- address
str - Поле %address% шаблона процесса.
- parameters
str - Поле %parameters% шаблона процесса.
- destination
str - Поле %destination% шаблона процесса.
Например, при шаблоне scp %parameters% %full_path% %address%:%destination%/%preset_name%/, пути до файла ассета /var/vod/default/file.ts,
использовании пресета по умолчанию и следующих параметрах адреса:
"vod-distribution-addresses": [
{
"enabled": true,
"address": "user@127.0.0.1",
"destination": "/var/vod/files",
"parameters": "-i /home/.ssh/id_rsa"
}
]
команда дистрибьюции будет выглядеть как scp -i /home/.ssh/id_rsa /var/vod/default/file.ts user@127.0.0.1:/var/vod/files/default/.
Примечание 1: дистрибьюция производится последовательно по каждому адресу после окончания инжестирования. Если дистрибьюция по одному из адресов была завершена с ошибкой (дочерний процесс вернул не 0), то дальшейшая обработка ассета будет приостановлена, инжестирование будет считаться неуспешным.
Примечание 2: при использовании scp для дистрибьюции необходимо внести хост в список известных у ssh-клиента.