Переменные
Переменные
Заголовок раздела «Переменные»В senta-streamer есть несколько типов переменных, которые можно использовать в профилях:
- Стандартные переменные:
${i}— входной поток,${o}— выходной поток - Пользовательские переменные (текстовые, булевые и с выбором значения)
Описание пользовательских переменных
Заголовок раздела «Описание пользовательских переменных»После ключевого слова WHERE в профиле начинается JSON-массив со спецификацией переменных.
Для каждой переменной создаётся объект со следующими полями:
desc— описание переменной, которое используется в командеname— имя, которое будет использоваться в форме добавления потокаdescription— описание переменной, которое будет использоваться в форме добавления потока (необязательно)command— часть команды, где$valueбудет заменено на значение из формы добавления потока (например,-gpu $value)default— значение по умолчанию, может быть пустым
Например:
// Простой стартовый профиль для HD h264 кодирования// Вы можете изменить его, форкнуть и поделиться с другимиffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc ${gpu} -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}NAME "HD h264"WHERE[ { "desc": "gpu", "data": { "name": "GPU", "description": "Выберите GPU, который будет использоваться потоком, оставьте пустым, если не используете GPU", "command": "-gpu $value", "default": "" } }]В этом примере:
Стандартные переменные:
Стандартные переменные (не нужно указывать их отдельно):
${i} — входной поток, можно использовать больше одного входа, в меню добавления потока они будут пронумерованы с 0 (вход #0, вход #1 …)
${o} — выходной поток, можно использовать больше одного выхода, в меню добавления потока они будут пронумерованы с 0
Пользовательские переменные:
(в этом примере вы можете добавить любые нужные вам переменные):
${gpu} — номер GPU-адаптера
Примечание: значение по умолчанию в этом примере пустое (в команду НЕ добавляется -gpu), но вы можете задать значение по умолчанию
Текстовые переменные
Заголовок раздела «Текстовые переменные»При формировании командной строки текстовые переменные заменяются на пользовательский текст.
Пример текстовой переменной:
{"desc": "logo","data": { "name": "Logo path", "description": "Укажите путь к файлу изображения с логотипом", "command": "-i $value", "default": ""}}В профиле переменная ${logo} будет заменена на -i $value.
В редакторе потока появится поле с меткой Logo path, с описанием Укажите путь к файлу изображения с логотипом, и его значение заменит $value.
В итоге получаем профиль:
ffmpeg -i ${i} ${logo} bla-bla ${o}NAME "TEST"WHERE[ { "desc": "logo", "data": { "name": "Logo path", "description": "Укажите путь к файлу изображения с логотипом", "command": "-i $value", "default": "" } }]В настройках потока укажем:
input#0: 'inp.ts'output#0: 'udp://out:1234'logo: 'logo.ts'В результате команда запуска будет такой:
ffmpeg -i inp.ts -i logo.ts bla-bla udp://out:1234Булевые переменные
Заголовок раздела «Булевые переменные»Булевые переменные добавляют текст при формировании команды запуска, если значение true, и не добавляют его, если значение false.
Чтобы задать этот тип, нужно добавить "extendtion": {"type": "checkbox",} в структуру переменной
Пример:
// Пример булевой переменной// Эта переменная используется для установки опции -y, которая нужна для перезаписи выходного файла"desc": "rev","data": { "name": "Перезаписать файл", "description": "Эта опция нужна, если в качестве выхода используется локальный файл", "command": "-y", "default": "", "extendtion": { "type": "checkbox", }}Эта переменная добавит флаг -y, если чекбокс отмечен.
Переменные с выбором значения
Заголовок раздела «Переменные с выбором значения»Похожи на текстовые переменные, только пользователю предлагается выбрать из заранее заданных значений. Удобно использовать, например, при выборе разрешения изображения или кодека.
Нужно добавить "extendtion": {"type": "select"} в структуру переменной и добавить предустановленные опции в "options": [...]
Пример.
// Пример переменной-выбора// Эта переменная используется для выбора видеокодека"desc": "cv","data": { "name": "Видеокодек", "description": "Чтобы скопировать оригинальный кодек, выберите copy", "command": "-c:v $value", "default": "", "extendtion": { "type": "select", "options": [ "h264_nvenc", "libx264", "libx265", "hevc_nvenc", "libaom-av1", "libvpx", "libvpx-vp9", "copy" ] }}Автоматическая генерация переменных
Заголовок раздела «Автоматическая генерация переменных»Эта функция разрабатывается для интеграции с другими системами, например, с Astra Cesbo. Но вы можете использовать её вручную. На данный момент реализована автоматическая генерация входных адресов.
Например, внешняя система может отправлять потоки с адресами udp://192.168.0.1:9000 — udp://192.168.0.1:9999 в Senta для последующего транскодирования. Однако для создания процесса нужно знать свободный порт (так как порт может быть уже занят другим потоком). Чтобы Senta могла выделить порт, нужно:
Перейти в Настройки, где есть раздел Настройки автоматической генерации входа. Там указываем начальный порт: 9000, конечный порт: 9999 и IP интерфейса: 192.168.0.1. Затем применяем настройки.

При создании процесса указываем входной адрес как udp://${host}:${port} (
или назначаем адрес при создании потока, нажав кнопку Set auto generation). Соответственно, создаётся процесс с входом udp://192.168.0.1:9000, если порт 9000 свободен на сервере.
Senta отслеживает свободные и занятые порты. Когда поток удаляется, порт, который он занимал, освобождается.