Функционал предназначен для организации RTSP-трансляции с камеры кассы самообслуживания (КСО) с целью передачи видеопотока во внешние системы мониторинга и антифрода.
| Видеопоток передается в формате H.264. |
Источник (Публикующий):
Представлен сервисом artix-usb2rtsp (использует утилиту ffmpeg).
Выполняет захват сырого видеопотока с подключенной веб-камеры (по умолчанию /dev/video0).
Выполняет кодирование видео в формат H.264 (с помощью аппаратного ускорения VAAPI или программной библиотеки x264).
Транслирует подготовленный поток на локальный медиасервер.
Медиасервер (RTSP-сервер):
Представлен сервисом artix-mediamtx.
Принимает видеопоток от источника на локальный адрес (в конфигурации по умолчанию — rtsp://127.0.0.1:8554/video0).
Ожидает входящие сетевые подключения и управляет раздачей видеопотока.
Клиент (Потребитель):
Представлен внешней системой мониторинга, антифрода или любым медиаплеером на удаленном рабочем месте (хостовой машине).
Подключается к медиасерверу кассы по ее IP-адресу для получения трансляции.
Необходимо использовать пакеты из репозитория Artix. |
Для работы необходимо:
artix-usb2rtsp – сервис захвата видео. При первом запуске сервис необходимо включить вручную.
sudo apt install artix-usb2rtsp |
Вместе с сервисом будут установлены:
|
intel-media-va-driver-non-free – пакет драйверов для работы с использованием аппаратного ускорения VAAPI.
sudo apt install intel-media-va-driver-non-free |
| После установки пакета аппаратное ускорение активируется автоматически. |
Выполнить команду перечитывания конфигурации systemd.
systemctl daemon-reload |
Включить и добавить в автозапуск сервис RTSP-сервера.
systemctl enable --now artix-mediamtx.service |
Включить и добавить в автозапуск сервис захвата видео.
systemctl enable --now artix-usb2rtsp.service |
Для проверки статуса работы запущенных сервисов используется команда:
systemctl status artix-mediamtx.service artix-usb2rtsp.service --no-pager -l |
Для приема и просмотра RTSP-потока необходимо:
На клиентской машине установить программное обеспечение, поддерживающее работу с протоколом RTSP и декодирование видео в формате H.264:
Пакет ffmpeg (содержит утилиту ffplay).
Универсальный медиаплеер (например, VLC media player).
Специализированная система видеонаблюдения (VMS) или система мониторинга/антифрода.
В интерфейсе установленного программного обеспечения задать адрес подключения к медиасерверу кассы:
IP-адрес кассы,
порт (по умолчанию 8554),
путь к потоку (например, video0).
Для подключения к трансляции, запущенной с камеры video0, на клиентской машине необходимо выполнить команду:
ffplay -rtsp_transport tcp rtsp://<IP_КСО>:8554/video0 |
Захват, кодирование и трансляция видеопотока осуществляется с использованием следующих компонентов:
| Наименование | Описание | Примечания |
|---|---|---|
v4l2 | Подсистема в операционной системе Linux, которая отвечает за работу с видеоустройствами | |
| rtsp | Протокол потокового вещания в реальном времени | |
| h264_vaapi | Аппаратный кодировщик видео H.264 | Использует видеокарты (в основном Intel и AMD) в Linux для быстрой обработки видео без нагрузки на процессор |
| x264 | Программная библиотека для кодирования H.264 | Сжимает видео силами центрального процессора (CPU) для максимального качества |
Параметры трансляции задаются в конфигурационном файле /opt/artix-usb2rtsp/config.ini:
| Наименование | Возможные значения | Описание | Примечания | |
|---|---|---|---|---|
| logLevel | -8 - quiet 0 - panic 8 - fatal 16 - error 24 - warning 32 - info 40 - verbose 48 - debug 56 - trace | Уровень логирования | По умолчанию 32 | |
| input | Адрес камеры | По умолчанию /dev/video0 | ||
output | Ссылка на поток камеры | По умолчанию rtsp://127.0.0.1:8554/video0 | ||
| input.video_size | Разрешение видео | |||
| input.input_format | Формат кодирования входных данных | |||
| input.framerate | Количество кадров в секунду, передаваемых камерой | |||
| output.rtsp_transport |
| Транспортный протокол нижнего уровня для исходящего соединения |
| |
| output.framerate | Количество кадров в секунду, передаваемых во внешние системы мониторинга и антифрода | По умолчанию используется значение из параметра input.framerate | ||
| output.rc_mode | Режим управления параметрами кодирования выходного видеопотока | Параметр добавляется вручную.
| ||
| uvc.auto_exposure | Автоматическая экспозиция | Набор доступных параметров и диапазоны их значений зависят от модели камеры. Камера использует ранее установленные значения до изменения или отключения питания. Комментирование параметра не приводит к сбросу его значения. Если параметр закомментирован, то после включения питания камеры применяются значения по умолчанию в зависимости от модели камеры | ||
| uvc.focus_automatic_continuous | Непрерывная автоматическую фокусировка камеры | |||
| uvc.white_balance_automatic | Баланс белого | |||
| uvc.exposure_time_absolute | Время экспозиции камеры | |||
| uvc.focus_absolute | Значение фокусировки камеры | |||
| uvc.white_balance_temperature | Температура изображения | |||
| uvc.gain | Усиление сигнала камеры | |||
| uvc.brightness | Яркость изображения | |||
| uvc.contrast | Контрастность изображения | |||
| uvc.saturation | Насыщенность цветов изображения | |||
| uvc.hue | Оттенок изображения | |||
| uvc.gamma | Гамма-коррекции изображения | |||
| uvc.power_line_frequency | Частота электросети для компенсации мерцания | |||
| uvc.sharpness | Резкость изображения | |||
| uvc.backlight_compensation | Уровень компенсации задней засветки |
; Уровень логирования ; Возможные значения: ; -8 - quiet ; 0 - panic ; 8 - fatal ; 16 - error ; 24 - warning ; 32 - info ; 40 - verbose ; 48 - debug ; 56 - trace ; Значение по умолчанию 32 ;logLevel = 32 [video0] ; Путь до камеры input = /dev/video0 ; Путь до rtsp сервера output = rtsp://127.0.0.1:8554/video0 ; Параметры камеры + параметры декодера ; v4l2: https://ffmpeg.org/ffmpeg-devices.html#Options-17 input.video_size = 1280x720 input.input_format = mjpeg input.framerate = 30 ; Параметры rtsp соединения + параметры кодера ; rtsp: https://ffmpeg.org/ffmpeg-protocols.html#Muxer ; h264_vaapi: https://ffmpeg.org/ffmpeg-codecs.html#VAAPI-encoders ; x264: https://ffmpeg.org/ffmpeg-codecs.html#Options-41 output.rtsp_transport = tcp output.framerate = 15 ; UVC-параметры камеры ; Набор доступных параметров и диапазоны их значений зависят от модели камеры ;uvc.auto_exposure = 1 ;uvc.focus_automatic_continuous = 0 ;uvc.white_balance_automatic = 0 ;uvc.exposure_time_absolute = 500 ;uvc.focus_absolute = 30 ;uvc.white_balance_temperature = 4600 ;uvc.gain = 0 ;uvc.brightness = 135 ;uvc.contrast = 35 ;uvc.saturation = 40 ;uvc.hue = 0 ;uvc.gamma = 140 ;uvc.power_line_frequency = 1 ;uvc.sharpness = 5 ;uvc.backlight_compensation = 64 |
Для работы с одной камерой и одним потоком необходимо задать параметры в конфигурационном файле /opt/artix-usb2rtsp/config.ini в секции [video0]:
[video0] input = /dev/video0 output = rtsp://127.0.0.1:8554/video0 input.video_size = 1280x720 input.input_format = mjpeg input.framerate = 30 output.rtsp_transport = tcp output.framerate = 15 |
Рекомендуется подключение по USB 3.0 для стабильной работы. В некоторых случаях это позволяет избежать ошибок запуска трансляции и проблем, вызванных недостаточной пропускной способностью контроллера USB при использовании нескольких камер. |
Для работы с двумя камерами и двумя потоками необходимо в конфигурационном файле /opt/artix-usb2rtsp/config.ini:
[video0].[video1].[video1].[video0] input = /dev/video0 output = rtsp://127.0.0.1:8554/video0 input.video_size = 1280x720 input.input_format = mjpeg input.framerate = 30 output.rtsp_transport = tcp output.framerate = 15 [video1] input = /dev/video1 output = rtsp://127.0.0.1:8554/video1 input.video_size = 1280x720 input.input_format = mjpeg input.framerate = 30 output.rtsp_transport = tcp output.framerate = 15 |
При работе с двумя камерами сервис artix-mediamtx выполняет ретрансляцию двух потоков, публикуя каждый поток по соответствующему RTSP-пути.

Если установлен пакет intel-media-va-driver-non-free, то для работы без аппаратного ускорения необходимо отключить его вручную. |
Для отключения аппаратного ускорения необходимо:
Создать файл /etc/systemd/system/artix-usb2rtsp.service.d/override.conf.
sudo touch /etc/systemd/system/artix-usb2rtsp.service.d/override.conf |
Если директория |
Добавить в файл настройку:
[Service] Environment=USE_VAAPI=0 |
Проверить, что изменения в файле /etc/systemd/system/artix-usb2rtsp.service.d/override.conf сохранены.
Выполнить команду перечитывания конфигурации systemd.
systemctl daemon-reload |
Перезапустить сервисы artix-mediamtx и artix-usb2rtsp.
systemctl restart artix-mediamtx.service artix-usb2rtsp.service |