Стартовые профили
При первом запуске Senta автоматически создаёт 8 готовых профилей — они сразу видны на странице Профили. Здесь разобрана команда ffmpeg каждого из них: что она делает, зачем нужен каждый ключ, и в каких случаях профиль стоит (или не стоит) использовать как есть.
Общие ключи ffmpeg
Заголовок раздела «Общие ключи ffmpeg»Прежде чем разбирать профили по отдельности — таблица ключей, которые повторяются почти в каждом из них (полный список — в официальной документации ffmpeg):
| Ключ | Что делает |
|---|---|
-y | Перезаписывать выходной файл без запроса подтверждения. |
-hide_banner | Не выводить в лог служебную информацию о сборке ffmpeg при старте. |
-re / -readrate 1 | Читать входной файл с его собственной (реальной) скоростью, а не так быстро, как получится — нужно, чтобы файл можно было транслировать как живой поток. |
-stream_loop -1 | Зациклить входной файл — после достижения конца начинать сначала, бесконечно. |
-map 0:0 -map 0:1 | Явно включить в вывод дорожки 0 (видео) и 1 (аудио) из входного файла — подстраховка на случай, если ffmpeg сам выберет не те дорожки. |
-c:v, -c:a | Кодек видео и аудио соответственно. Значение copy означает «скопировать поток как есть, без перекодирования». |
-b:v, -b:a | Целевой битрейт видео и аудио. |
-preset fast | Баланс между скоростью кодирования и эффективностью сжатия у программных кодеков (libx264/libx265) — fast жертвует небольшой долей качества/размера ради скорости. |
-profile:v main | Профиль H.264 Main — хороший баланс между совместимостью с плеерами и качеством. |
-filter:v yadif | Деинтерлейсинг — убирает чересстрочность у источников, снятых с интерлейсингом. |
-forced-idr 1 | Заставляет кодировщик (актуально для NVENC) ставить полноценные IDR-кадры на ключевых точках, а не облегчённые I-кадры — важно, если поток потом режут на сегменты (HLS/DASH) или переключают между источниками. |
-r | Частота кадров на выходе. |
-g | Размер GOP — интервал между ключевыми кадрами, в кадрах. |
-keyint_min | Минимальный интервал между ключевыми кадрами. |
-f mpegts | Формат контейнера на выходе — MPEG-TS. |
-gpu | Индекс видеокарты NVIDIA, которая должна использоваться для аппаратного кодирования NVENC. |
${i} / ${o} | Стандартные переменные входа/выхода — см. Переменные. |
HD h264 (ID 1)
Заголовок раздела «HD h264 (ID 1)»ffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 ${cv} ${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}WHERE[ { "desc": "gpu", "data": { "name": "GPU", "description": "Select GPU which stream will use, set empty if you don't use GPU", "command": "-gpu $value", "default": "" } }, { "desc": "cv", "data": { "name": "Video codec", "description": "To copy original codec set copy", "command": "-c:v $value", "default": "", "extension": { "type": "select", "options": ["h264_nvenc", "libx264", "libx265", "hevc_nvenc", "libaom-av1", "libvpx", "libvpx-vp9", "copy"] } } }]HD-транскодирование с битрейтом 4 Мбит/с. При создании стрима можно выбрать видеокодек из выпадающего списка — аппаратный (h264_nvenc, hevc_nvenc), программный (libx264, libx265, libaom-av1, libvpx*) или просто copy, чтобы не перекодировать видео вовсе — а также указать, какой GPU использовать для транскодирования.
- Плюсы: самый гибкий из стартовых профилей — кодек выбирается прямо при создании стрима, без правки самого профиля.
- Минусы: деинтерлейсинг (
yadif) и настройки GOP зашиты в профиль и не выводятся как переменные — если источник прогрессивный или нужен другой интервал ключевых кадров, профиль придётся скопировать и отредактировать вручную.
SD h264 (ID 2)
Заголовок раздела «SD h264 (ID 2)»ffmpeg -re -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc -gpu 0 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 1M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}Тот же набор ключей, что у HD, но с фиксированным битрейтом 1 Мбит/с и без переменных — кодек (h264_nvenc) и GPU (0) зашиты прямо в команду.
- Плюсы: минимум настроек — сразу готов к использованию, если у вас NVIDIA-карта с NVENC.
- Минусы: без GPU с поддержкой NVENC профиль не запустится вообще; чтобы сменить кодек или индекс GPU, нужно редактировать команду напрямую.
SD+HD h264 (ID 3)
Заголовок раздела «SD+HD h264 (ID 3)»ffmpeg -re -y -hide_banner -stream_loop -1 -i ${i} -gpu 1 -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -c:v h264_nvenc -b:v 4M -c:a aac -b:a 128k -f mpegts ${o} -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -vf scale=568:-1 -c:v h264_nvenc -b:v 1M -c:a aac -b:a 128k -f mpegts ${o}Один процесс ffmpeg с двумя выходами сразу: полноразрешающий поток на 4 Мбит/с и уменьшенный до ширины 568px (-vf scale=568:-1, высота считается автоматически, чтобы сохранить пропорции) на 1 Мбит/с. При создании стрима на основе этого профиля Senta покажет два поля — Output #0 и Output #1, для полного и уменьшенного варианта соответственно.
- Плюсы: одна команда вместо двух отдельных стримов — экономит декодирование входного потока (оно происходит один раз на оба выхода).
- Минусы: нагрузка на GPU выше (кодируются сразу два варианта), жёстко привязан к NVENC,
-gpu 1— индекс видеокарты зашит в команду и не вынесен в переменную.
ACC (ID 4)
Заголовок раздела «ACC (ID 4)»ffmpeg -readrate 1 -y -hide_banner -stream_loop -1 -vcodec copy -acodec aac -i ${i} ${o}Копирует видео без перекодирования и конвертирует аудиодорожку в AAC — полезно, если исходный звук в формате, который не поддерживается плеером или CDN (например, AC3), а перекодировать видео не хочется.
- Плюсы: почти не нагружает CPU/GPU — перекодируется только аудио.
- Минусы: битрейт AAC не задан явно — используется значение по умолчанию из ffmpeg, что может быть неожиданным; если исходный звук уже в AAC, профиль не нужен.
Logo adding (ID 5)
Заголовок раздела «Logo adding (ID 5)»// Add a logo to the videoffmpeg -i ${i} ${logo} -filter_complex "[1][0]scale2ref=oh*mdar:ih*0.2[logo][video];[video][logo]overlay=(main_w-overlay_w)-${x}:${y}" -y ${o}WHERE[ { "desc": "logo", "data": { "name": "Logo path", "description": "Print the path to the image file with the logo", "command": "-i $value", "default": "" } }, { "desc": "x", "data": { "name": "Shift along the X axis", "description": "Offset from the top right corner along the X axis", "command": "$value", "default": "" } }, { "desc": "y", "data": { "name": "Shift along the Y axis", "description": "Offset from the top right corner along the Y axis", "command": "$value", "default": "" } }]Накладывает изображение (логотип) на видео. Фильтр scale2ref сначала масштабирует логотип по высоте видео (ih*0.2 — 20% от высоты кадра, ширина считается автоматически по scale2ref, чтобы сохранить пропорции логотипа), затем overlay размещает его с отступом x/y от правого верхнего угла кадра.
- Плюсы: позиция и путь к файлу логотипа настраиваются переменными без правки самой команды.
- Минусы: у команды нет
-c:v/-c:aи-f— формат контейнера на выходе ffmpeg определит по расширению${o}(например,output.ts); если в качестве выхода указан сетевой адрес без расширения (udp://...), формат нужно будет задать самостоятельно, добавив, например,-f mpegtsв команду. Логотип можно закрепить только в правом верхнем углу — для другого положения потребуется поменять формулу вoverlay.
Remove sound (ID 6)
Заголовок раздела «Remove sound (ID 6)»// Remove sound from videoffmpeg -i ${i} -an -c:v copy ${o}Убирает звук из видео (-an — no audio) и копирует видеопоток без перекодирования.
- Плюсы: работает почти мгновенно — видео не перекодируется.
- Минусы: раз видео копируется как есть, профиль не годится, если заодно нужно сменить контейнер/кодек на несовместимый с исходным.
SIMPLE TESTCARD (ID 7)
Заголовок раздела «SIMPLE TESTCARD (ID 7)»// Simple testcard with 8 color bars and 1kHz tone// You don't need any input file, just run itffmpeg -re -f lavfi -i pal100bars=size=1920x1080:rate=25 -c:v libx264 -g 12 -b:v 2M -f mpegts ${o}Генерирует тестовую картинку — цветные полосы PAL — через встроенный в ffmpeg источник lavfi, без какого-либо входного файла.
- Плюсы: не требует реального источника видео — можно проверить связку Senta → сеть → плеер за минуту.
- Минусы: разрешение, битрейт и частота кадров зашиты в команду и не вынесены в переменные.
Static file streaming (ID 8)
Заголовок раздела «Static file streaming (ID 8)»// Streaming a static fileffmpeg -re -stream_loop -1 -i ${i} -vcodec mpeg4 -aspect 16:9 -f mpegts ${o}Зацикленно транслирует локальный файл, как будто это живой источник — именно этот профиль используется в примере из Quick Start.
- Плюсы: самый простой способ превратить любой файл в постоянно работающий тестовый стрим.
- Минусы: кодек (
mpeg4) устарел по сравнению с h264/h265 и менее эффективен по битрейту; соотношение сторон зафиксировано как 16:9 независимо от реального видео.