Ubuntu Server 24.04.1 / поток с USB веб-камеры на HTTP / Octoprint

Вопрос или проблема

Я совершенно не разбираюсь во всем этом, поэтому это, вероятно, проявится в том, что я здесь напишу.

Я загрузил ubuntu server 24.04.1 на старый Zoltac ZBox. Это заняло некоторое время, но я все же смог наладить беспроводную сеть. Затем я следовал инструкциям и установил Octoprint (веб-ориентированное программное обеспечение для 3D-печати), чтобы я мог использовать http, загружать файлы и начинать 3D-печать.

В Octoprint есть опция, позволяющая как потоковое видео, так и снимки, поэтому я купил безымянную USB веб-камеру на Ebay. Следуя некоторым инструкциям в интернете, я смог установить ffmpeg и протестировать захват видео в файл на диск. Затем я передал файл на свой ПК с Windows и смог посмотреть видео. Octoprint не видит камеру.

В различных попытках заставить веб-камеру работать я попробовал установить пакет webcam, но не имею понятия, что с ним делать. Я попытался установить и использовать fmpg-streamer через что-то под названием snap, но не могу получить доступ к видео на порту 8080.

Мне нужно, чтобы веб-камера была видима для Octoprint, чтобы он мог передавать ее по http.

Любая помощь будет очень полезной, так как я прочитал много информации в интернете, но из-за отсутствия знаний не могу ничего понять. Я бы хотел получить предложения, что читать на базовом уровне, чтобы понять, как это все должно работать и что мне нужно сделать. Я понимаю, что из-за всего, что я пробовал, не зная, как это работает, мне, возможно, придется начать с чистой установки ubuntu server, заставить USB веб-камеру работать по http, затем переустановить Octoprint и настроить там видео.

Спасибо за любую помощь, которую вы сможете предоставить.

Ответ или решение

Конечно, настройка потоковой передачи видео с USB веб-камеры через HTTP на Ubuntu Server, а затем интеграция этой функции с OctoPrint может казаться сложной задачей, особенно если у вас нет большого опыта в области ИТ. Давайте разберемся, как вы можете это осуществить, начиная с первого этапа настройки, до полной интеграции с OctoPrint.

Теория

Цель заключается в том, чтобы захватить видеопоток с вашей веб-камеры и сделать его доступным по протоколу HTTP, чтобы OctoPrint мог его использовать. Это обычно включает в себя использование программного обеспечения, такого как MJPG-streamer или FFmpeg, для захвата видео с камеры и трансляции его в формате, который может быть передан через веб-сервер на HTTP-порт. Ваша задача — настроить это программное обеспечение правильно и убедиться, что OctoPrint может получить доступ к этому потоку.

Пример

1. Установка Debian/Ubuntu пакетов

MJPG-Streamer

Это популярный выбор для потокового видео с веб-камер на устройствах с ограниченными ресурсами, таких как ваш Zoltac ZBox. Он поддерживает трансляцию в формате Motion JPEG, который совместим с большинством веб-браузеров и легко интегрируется с OctoPrint.

  1. Установите необходимые пакеты:
sudo apt-get update
sudo apt-get install git build-essential libjpeg-dev imagemagick libv4l-dev cmake
  1. Загрузите и установите MJPG-Streamer:
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make
  1. Запустите MJPG-Streamer, указав устройство вашей камеры (обычно что-то вроде /dev/video0):
./mjpg_streamer -i "./input_uvc.so -d /dev/video0" -o "./output_http.so -w ./www -p 8080"

Это начинает потоковку видео с вашей камеры на порт 8080.

2. Интеграция потока с OctoPrint

Теперь, когда у вас работает потоковая передача видео, необходимо убедиться, что OctoPrint может получить к ней доступ.

  1. Откройте OctoPrint и перейдите в Настройки (Settings).
  2. Найдите раздел Потоковая передача веб-камеры (Webcam & Timelapse).
  3. Введите URL вашего потока, который должен быть чем-то вроде http://<ip_адрес_вашего_сервера>:8080/?action=stream.
  4. Проверьте, работает ли поток, в верхнем правом углу окна OctoPrint должна появиться возможность для предпросмотра видео напрямую.

Применение

Если MJPG-Streamer вас не устраивает или вы хотите попробовать что-то другое, вы можете использовать FFmpeg, чтобы создать поток с команды, которая будет передавать видеопоток с вашей камеры на HTTP-порт.

  1. Установка FFmpeg:
sudo apt-get install ffmpeg
  1. Создание потока:
ffmpeg -f video4linux2 -input_format mjpeg -r 30 -i /dev/video0 -f mpjpeg -r 30 -q:v 5 - 

vcodec copy -an -f mjpeg http://0.0.0.0:8080/feed.ffm

Обратите внимание, что для достижения оптимального результата с каждым устройством может потребоваться настройка индивидуальных параметров ввода и выхода видео.

Заключение

Интеграция потокового видеовещания веб камеры и OctoPrint на Ubuntu Server — задача вполне решаемая. Главное, использовать инструментарий, подходящий для ваших аппаратных ресурсов и версии системы, и тщательно следовать документации. Если же у вас возникнут трудности на каком-либо этапе, хорошо снова проверить устройства и пакеты на правильную инсталляцию и совместимость. Знания в этой области помогут вам не только в этой задаче, но и в будущем, при работе с разными веб-приложениями и аппаратным обеспечением.

Оцените материал
Добавить комментарий

Капча загружается...