Инструменты пользователя

Инструменты сайта


klipper:ustreamer

Это старая версия документа!


Замена mjpg-streamer на ustreamer

Здесь описывается локальная сборка, в идеале надо сделать пакет, но это, возможно, в будущем.

Отключаем mjpg-streamer

Первым делом надо остановить и отключить mjpg-streamer, если он есть в системе. Так как ustreamer вырос из mjpg-streamer'a. Выполняем команды:

sudo systemctl stop webcamd
sudo systemctl disable webcamd

Такими действиями мы не удалили, но отключили mjpg-streamer.

Сборка ustreamer

Далее нам надо собрать ustreamer. В принципе, инструкция есть на домашней странице проекта на гитхабе.

Пререквизиты для сборки make, gcc, libevent c поддержкой pthreads, libjpeg-turbo и libbsd.

sudo apt install libevent-dev libjpeg62-turbo-dev libbsd-dev libgpiod-dev libsystemd-dev

Собираем его (по-умолчанию в нашем домашнем каталоге, ~/, он же /home/klipper). Сборку делаем с поддержкой GPIO (не смог придумать кейс, но пусть будет) и поддержкой SYSTEMD (для автозапуска).

git clone --depth=1 https://github.com/pikvm/ustreamer
cd ustreamer
WITH_GPIO=1 WITH_SYSTEMD=1 make
./ustreamer --help

Установка ustreamer

В итоге, если все получилось, инсталлируем стример локально.

sudo make install

После выполнения этой команды бинарник стримера будет установлен в /usr/local/bin/

Дальше нам надо решить вопрос с автозапуском. Что нужно сделать описано здесь. Но мы приведем здесь последовательность действий, адаптированную под нашу систему.

Первым делом надо убедиться, что установка прошла успешно:

ls -l /usr/local/bin/ustreamer
-rwxr-xr-x 1 root root 419392 ноя 10 12:18 /usr/local/bin/ustreamer

У вас права доступа (-rwxr-xr-x) должны быть как в примере выше.

Запускать процесс будем от имени пользователя klipper.

Добавляем пользователя в группу video (он там уже должен быть, но хуже от команды точно не будет):

sudo usermod -a -G video klipper

Далее нам нужно создать руками конфигурационный файл для systemd. В нашем случае мы не будем делать как предлагает автор ustreamer'a, сделаем конфиг под конкретное видеоустройство, а именно /dev/video1 (если у вас камера на другом порту, то надо указывать его, конечно), а также, чтобы ustreamer «слушал» на порту 8080, там видеопоток ожидает клиппер.

Используем наиболее привычный вам текстовый редактор в unix-среде (vim, nano, joe..):

sudo nano /etc/systemd/system/ustreamer.service

в файле пишем следующее (обратите внимание - формат, fps и качество задаются в ключах resolution, desired-fps и quality соответственно):

[Unit]
Description=uStreamer service
After=network.target
[Service]
Environment="SCRIPT_ARGS=1"
User=klipper
ExecStart=/usr/local/bin/ustreamer --process-name-prefix ustreamer-1 --log-level 0 --device /dev/video1 --device-timeout=8  --quality 100 --resolution 1280x720 --desired-fps=30 --host=0.0.0.0 --port=8080 --static /var/www/html/ustreamer-1/
[Install]
WantedBy=multi-user.target

Включаем автозапуск стримера:

sudo systemctl enable ustreamer.service

и, наконец, запускаем сервис:

sudo systemctl start ustreamer.service

Убеждаемся, что все запустилось:

systemctl status ustreamer                                                                                                                                                                                                                                                                                                     <master>
● ustreamer.service - uStreamer service
     Loaded: loaded (/etc/systemd/system/ustreamer.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-11-10 12:44:07 MSK; 4s ago
   Main PID: 4544 (main)
      Tasks: 7 (limit: 2218)
     Memory: 3.3M
        CPU: 1.287s
     CGroup: /system.slice/ustreamer.service
             └─4544 ustreamer-1: /usr/local/bin/ustreamer --process-name-prefix ustreamer-1 --log-level 0 --device /dev/video1 --device-timeout=8 --quality 100 --resolution 1280x720 --desired-fps=30 --host=0.0.0.0 --port=8080 --static /var/www/html/ustreamer-1/

Финально заходим в интерфейс клиппера - всё должно работать (если вы до этого уже настраивали камеру и прописывали все нужные настройки, конечно).

klipper/ustreamer.1668073721.txt.gz · Последнее изменение: 2022/11/10 12:48 — korxif