Вопрос или проблема
Я совершенно не разбираюсь во всем этом, поэтому это, вероятно, проявится в том, что я здесь напишу.
Я загрузил 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.
- Установите необходимые пакеты:
sudo apt-get update
sudo apt-get install git build-essential libjpeg-dev imagemagick libv4l-dev cmake
- Загрузите и установите MJPG-Streamer:
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make
- Запустите 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 может получить к ней доступ.
- Откройте OctoPrint и перейдите в
Настройки
(Settings). - Найдите раздел
Потоковая передача веб-камеры
(Webcam & Timelapse). - Введите URL вашего потока, который должен быть чем-то вроде
http://<ip_адрес_вашего_сервера>:8080/?action=stream
. - Проверьте, работает ли поток, в верхнем правом углу окна OctoPrint должна появиться возможность для предпросмотра видео напрямую.
Применение
Если MJPG-Streamer вас не устраивает или вы хотите попробовать что-то другое, вы можете использовать FFmpeg, чтобы создать поток с команды, которая будет передавать видеопоток с вашей камеры на HTTP-порт.
- Установка FFmpeg:
sudo apt-get install ffmpeg
- Создание потока:
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 — задача вполне решаемая. Главное, использовать инструментарий, подходящий для ваших аппаратных ресурсов и версии системы, и тщательно следовать документации. Если же у вас возникнут трудности на каком-либо этапе, хорошо снова проверить устройства и пакеты на правильную инсталляцию и совместимость. Знания в этой области помогут вам не только в этой задаче, но и в будущем, при работе с разными веб-приложениями и аппаратным обеспечением.