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-клиента.