SIRINVIDEO Документация администратора и интегратора На сайт 2026.08

FAQ

Короткие ответы на вопросы, которые возникают при первой установке и в эксплуатации: перекодирование, звук, метрики, лицензия, нагрузка, архив, доступ.

Вопросы сгруппированы по темам. Ответ здесь короткий и прямой; ссылка «подробнее» ведёт туда, где разобраны детали и настройки.

Общее#

Можно ли перекодировать поток на сервере?#

Нет. Сервер не меняет кодек, разрешение, частоту кадров и битрейт. Он принимает поток, переупаковывает его в нужный контейнер и раздаёт — кадры доходят до зрителя такими, какими пришли от источника. Директивы перекодирования в конфигурации нет: transcode …; — это ошибка unknown directive.

Что делать вместо этого:

  • Задайте нужный профиль на камере или кодировщике. Почти все камеры отдают два-три профиля одновременно — заведите два потока (cam1 с основного профиля и cam1-sub со второго) и используйте их для крупного окна и для мозаики.
  • Нужен другой кодек (например H.264 вместо H.265 для старых браузеров) — переключите его на источнике, второго пути нет.
  • Нужна адаптивная раздача по качеству для живого видео — она требует перекодирования и поэтому недоступна. Для файлов VoD несколько заранее подготовленных качеств собираются в один набор.

Подробнее: О продукте, Архитектура.

Нужны ли база данных, брокер сообщений или отдельный веб-сервер?#

Нет. Один исполняемый файл и один текстовый файл конфигурации. HTTP-слушатель сам отдаёт панель управления, API, плеер и медиа — ставить рядом веб-сервер не нужно. Подробнее: О продукте.

Сколько потоков потянет один сервер?#

Ограничителей три, и процессор среди них обычно последний — перекодирования нет, поэтому приём и раздача стоят дёшево, и счёт потоков на хост идёт на тысячи. Реальные границы:

Ограничитель Как считать
Лицензия max_streams — жёсткий предел числа потоков, сверх него поток не примется
Сеть сумма битрейтов источников + битрейт × число зрителей на каждом потоке
Диск если ведётся запись: суммарный поток записи и объём под глубину архива

Считайте по трафику и дискам, затем проверяйте на своём оборудовании. Подробнее: Производительность, Требования.

Источники и приём#

Как проверить установку, если камеры ещё нет?#

Используйте встроенный синтетический источник demo:// — тест-таблицу с часами и звуком. Ему не нужны ни камера, ни сеть, ни диск, и он годится в том числе для нагрузочных проверок. Подробнее: Быстрый старт.

Кодировщик умеет только отправлять поток сам. Как его принять?#

Объявите поток с источником publish:// и включите слушатель rtmp. Сервер будет ждать подключения по RTMP; из браузера тот же поток можно прислать по WHIP. Подробнее: Приём публикации: RTMP и WHIP.

Можно ли раздавать один принятый поток под несколькими именами?#

Да: источник copy://<имя исходного потока> заводит второе имя поверх уже принятого потока — без второго подключения к камере и без повторной упаковки. Записи у такого потока нет, а права доступа он наследует у оригинала. Подробнее: Приём видео: обзор.

Что происходит при обрыве связи с камерой?#

Сервер переподключается сам; зрители при этом не отключаются, а в потоке появляется отметка разрыва. Отдельно отслеживается более коварный случай, когда соединение с камерой живо, а кадры идти перестали, — сторожевой таймер перезапустит приём. Подробнее: Резервирование источников.

Поток не поднимается, в состоянии "source_error":"Timeout"#

Сервер не смог подключиться к источнику: чаще всего камера недоступна с этого сервера, закрыт порт или неверен путь в ссылке. Проверьте доступность камеры с самого сервера, затем сверьте ссылку в её веб-интерфейсе. Подробнее: Диагностика неисправностей.

Можно ли не держать камеру подключённой постоянно?#

Да, это режим по требованию: поток поднимается при первом зрителе и отключается через заданное время после последнего. На потоках с записью режим не действует — архив с дырами не имеет смысла. Подробнее: Приём видео: обзор.

Раздача и плееры#

Чем HLS отличается от LL-HLS и MSE-WS и что выбрать?#

Все три доставляют один и тот же поток, отличается способ и задержка:

Протокол Как устроен Доставка Когда выбирать
HLS плеер скачивает сегменты по списку секунды максимальная совместимость, раздача через кэширующие узлы
LL-HLS тот же список, но кусками поменьше и с ожиданием на сервере доли секунды тот же HLS там, где важна оперативность
MSE-WS постоянное соединение, сервер сам шлёт куски доли секунды наблюдение в браузере, мозаики, много окон
WebRTC отдельный медиаканал поверх UDP минимальная реакция «здесь и сейчас», звук G.711 в браузере

Измеренная разница в доставке между низкой задержкой и обычным HLS на одинаковых условиях — 317 мс против 2605 мс; итог у зрителя задаёт буфер плеера — целевая задержка встроенного плеера: ≈4 с на LL-HLS против ≈8 с на обычном HLS. Практическое правило: для видеонаблюдения в браузере берите MSE-WS, для широкой аудитории и внешних кэшей — HLS, для минимальной задержки и звука с камер — WebRTC. Подробнее: Протоколы раздачи.

Нужно ли включать протоколы раздачи по одному?#

Нет. Поток упаковывается один раз, и все протоколы читают один и тот же результат, поэтому HLS, DASH, MSE-WS и RTSP доступны сразу, без отдельных настроек. Отдельно включаются только варианты на основе MPEG-TS и многоадресная раздача. Подробнее: Архитектура.

Можно ли смотреть поток в обычном плеере или на видеостене?#

Да, по RTSP: rtsp://media.example.com:8554/<поток>. Этот путь не ограничен браузерными возможностями — по нему передаётся в том числе звук G.711. Подробнее: Протоколы раздачи.

Приставка или телевизор не играют поток#

Такие устройства часто требуют «склеенный» вариант потока вместо раздельных дорожек видео и звука. Для них у мастер-плейлиста есть отдельные варианты выдачи, а на потоке включается вариант на основе MPEG-TS. Подробнее: Протоколы раздачи.

Почему в браузере не играет H.265?#

Потому что браузер не умеет его декодировать — это ограничение клиента, а не сервера, и перекодированием оно не обходится (его нет). Решение — отдавать таким зрителям H.264 со второго профиля камеры. Подробнее: Протоколы раздачи.

Как встроить видео в свою страницу?#

Вставьте <iframe> со ссылкой на /<поток>/embed.html. У плеера есть режимы без заголовка и без вкладок — для плиток и мозаик, — а также выбор протокола прямо в адресе. Подробнее: Встраиваемый плеер.

Звук#

Почему у потока нет звука в браузере?#

Почти всегда потому, что камера отдаёт звук в G.711 — этот кодек браузеры не умеют декодировать в обычном режиме воспроизведения. Сервер в такой ситуации намеренно не создаёт звуковую дорожку: если объявить её и не отдать, у плеера встанет и видео. Поэтому вы получаете чистое видео без звука, а не сломанный поток.

Что можно сделать:

  • Переключить камеру на AAC, если модель это позволяет, — самое надёжное решение;
  • смотреть через WebRTC — единственный браузерный путь, который G.711 воспроизводит;
  • слушать вне браузера — по RTSP звук передаётся как есть;
  • выгрузить файл из архива — в скачанном фрагменте звук сохраняется полностью, даже если в браузере запись играет молча.

Серверного преобразования G.711 в AAC нет и не будет: это перекодирование. Подробнее: Протоколы раздачи.

Звук пропал именно в WebRTC, в HLS он был#

Обратный случай: WebRTC не передаёт AAC. Если источник отдаёт AAC, зритель WebRTC получит только видео — выберите для него HLS или MSE-WS. Подробнее: Протоколы раздачи.

Архив#

Как включить запись?#

Добавьте в блок потока одну строку с именем хранилища и глубиной хранения, например dvr local 24h 40G; — запись по времени и по объёму, что наступит раньше. Хранилище local создаёт установщик. Подробнее: Запись архива (DVR).

Куда девается архив, когда заканчивается место?#

Старые записи удаляются, новые продолжают писаться. Рубежей три, они работают вместе:

  1. Срок хранения — всё, что старше заданного времени, удаляется.
  2. Объём на поток — если оставшееся всё ещё превышает заданный объём, удаляются самые старые записи этого потока.
  3. Заполненность диска — когда диск переходит порог, удаляются самые старые записи по всем потокам этого хранилища, пока не освободится запас.

Самая свежая запись каждого потока не удаляется никогда — поток не может остаться совсем без архива. Если хранилищу задан признак тома, сервер вдобавок проверяет, что архивный диск действительно смонтирован: при непройденной проверке он не пишет и сообщает об ошибке, а не показывает пустой архив. Подробнее: Хранилища и S3.

Указал 30m, а записалось тридцать минут вместо тридцати месяцев#

Так и есть: m — это минуты, месяцы обозначаются mo. Полный набор: s — секунды, m — минуты, h — часы, d — сутки, w — недели, mo — месяцы (по 30 суток), y — годы. Подробнее: Запись архива (DVR).

Можно ли скачать кусок архива одним файлом?#

Да, экспортом клипа за указанный интервал — получится обычный MP4 со звуком. Выгрузка ограничена по объёму, поэтому длинные интервалы забирают не файлом, а плейлистом архива. Подробнее: Просмотр и экспорт.

Можно ли хранить архив в объектном хранилище?#

Да: диск работает как быстрый ярус, а S3-совместимое хранилище — как холодный, со своими сроком и объёмом. Указатель на записи остаётся локальным, поэтому перемотка по холодным данным не замедляется. Подробнее: Хранилища и S3.

Доступ#

Я задал пароль администратора. Видео теперь закрыто?#

Нет. Это два независимых замка: пароль администратора закрывает панель и API, а доступ к видео настраивается отдельно. Пока авторизация просмотра не настроена, любой, кто дотянулся до порта, может смотреть любой поток. Подробнее: Модель доступа.

Включите авторизацию просмотра и выдавайте зрителю ссылку с токеном, у которого задан срок действия: по истечении срока ссылка перестаёт работать сама. В токене можно дополнительно ограничить доступ одним потоком, набором протоколов, адресом зрителя и сайтом, с которого разрешено смотреть. Токен подписывает ваша система — сервер только проверяет подпись и содержимое.

Ссылка выглядит как http://media.example.com:8080/cam1/index.m3u8?token=<токен>; дальше плеер работает сам — сервер вписывает в плейлист короткий пропуск, и токен в каждом сегменте не нужен. Подробнее: Авторизация просмотра, Генераторы токенов на Python.

Плейлист открывается, а сегменты отвечают 401 или 403#

Токен предъявляется один раз — при запросе плейлиста; в ссылки на сегменты сервер сам вписывает короткий пропуск. Ошибка почти всегда означает, что ссылки на сегменты собираются в обход плейлиста и пропуск теряется. Вторая причина — запрос пришёл из другого браузера, чем тот, для которого пропуск выдан (пропуск привязан к нему), а при включённой привязке к адресу — ещё и с другого адреса. Подробнее: Авторизация просмотра.

Да, на потоке задаётся список разрешённых сайтов. Помните две вещи: это защита от встраивания в браузере, а не авторизация (программа-клиент её обходит), и она отключает кэширование сегментов для этого потока. Подробнее: Авторизация просмотра.

Почему без лицензии не идёт видео, хотя панель работает?#

Так задумано. Пока лицензия не действует, панель управления и API отвечают нормально, а любой медиазапрос получает отказ 403 license restricted. Это отличает «сервер не настроен» от «сервер сломался»: управление остаётся доступным, чтобы можно было разобраться. Ёмкость из лицензии одновременно ограничивает число потоков. Проверить состояние: GET /api/v1/license, поле state должно быть licensed. Подробнее: Лицензирование.

Эксплуатация#

Почему не видно метрик?#

С версии 2026.08 адрес /metrics требует учётных данных — раньше он был открыт. Сборщик должен присылать заголовок Authorization: Bearer <токен>; без него ответ — {"error":"unauthorized"}. Параметр в адресе (?token=) на этом маршруте не принимается намеренно: токен в URL попадает во все журналы по пути.

curl -sS -H "Authorization: Bearer $TOKEN" http://media.example.com:8080/metrics | head -3
# HELP hastreamer_process_cpu_cores Process CPU usage in cores (cputime-delta / cores).
# TYPE hastreamer_process_cpu_cores gauge
hastreamer_process_cpu_cores 0.0600

Для системы мониторинга заведите отдельный токен только на чтение — тогда сборщику не нужен пароль администратора. Об этом же напоминает строка в журнале при старте: /metrics is CLOSED … Set auth.api_read_token to give a scraper its own non-admin credential. Вторая по частоте причина — порт 8080 просто не открыт для сети мониторинга. Подробнее: Мониторинг и метрики.

Почему изменение применилось не сразу?#

Причин ровно три:

  1. Изменение относится к «рестартовым». Порты, число рабочих ядер и TLS-слушатели применяются только при systemctl restart, а не при reload.
  2. Файл изменён, но перезагрузка настроек не сделана. Правка hastreamer.conf вступает в силу по systemctl reload hastreamer; изменения через панель и API сервер применяет сам.
  3. Перезапускается только затронутый поток. Изменение внутри одного блока stream не трогает остальные потоки и их зрителей — это не «не применилось», а точечное применение.

Проверить, что сервер увидел новую конфигурацию, можно по журналу: строка config reload: applied epoch <N> появляется при каждом успешном применении. Подробнее: Применение изменений.

Можно ли поставить сервер за обратным прокси?#

Можно, но не обязательно: сервер сам умеет HTTPS и получение сертификатов. Если прокси всё же нужен, обязательно перечислите его адреса в списке доверенных — иначе все функции, зависящие от адреса зрителя (привязка токенов, учёт сессий, ограничение частоты запросов, журнал), увидят адрес прокси вместо адреса клиента. Прокси должен пропускать вебсокеты (для MSE-WS) и запросы диапазонов байт. Подробнее: TLS и сертификаты, Порты и сеть.

Как узнать, кто сейчас смотрит?#

В панели — раздел Sessions: протокол, адрес клиента, объём отданных байт и качество приёма по каждому зрителю. То же самое доступно через API, а ненужную сессию можно завершить принудительно. Подробнее: Веб-интерфейс.

Как перезапустить один поток, не трогая остальные?#

Кнопкой в карточке потока или запросом POST /api/v1/streams/{id}/restart. Это перезапуск приёма, конфигурация при этом не меняется. Подробнее: Потоки.

Где смотреть журнал?#

На сервере — journalctl -u hastreamer -f. Те же записи доступны в панели (раздел Logs) и через API, но там они хранятся в кольцевом буфере и не переживают перезапуск — то, что нужно хранить долго, забирайте из системного журнала. Подробнее: Мониторинг и метрики.

Правки через панель и правки в файле не поссорятся?#

Нет: панель и API пишут в тот же самый hastreamer.conf, что и вы, — это один источник истины. Если конфигурацию нужно защитить от изменений через интерфейс, её можно заблокировать; тогда попытка записи получает отказ, а чтение продолжает работать. Подробнее: Применение изменений, Конфигурация и система.

Как обновить сервер?#

Установщиком новой версии: он заменяет исполняемый файл и оставляет ваши конфигурацию, лицензию и архив нетронутыми. Подробнее: Обновление и удаление.