Я пишу веб-приложение, в котором хочу:
- Отображать ЛОКАЛЬНЫЙ поток с веб-камеры - это означает, что я хочу транслировать видео с сервера (я не хочу открывать веб-камеру клиента)
- Прочтите QR-коды и перечислите их в текстовом поле
Эти два уже были достигнуты, но! Я столкнулся с неожиданным поведением. Функциональность, которую я описал, работает отлично, но только на localhost. Я хочу развернуть его, чтобы он был доступен через другой компьютер (он предназначен для использования на роботе).
Итак, чтобы описать мою архитектуру: я использую Jetson TX2 в качестве сервера (здесь подключена веб-камера). Я использую веб-фреймворк Django, django-каналы, daphne в качестве веб-сервера и ngingx в качестве прокси. Я запускаю Дафну и фоновый процесс в супервизоре.
Я использую worker (фоновый процесс) для захвата кадров с веб-камеры и отправки их через redis на веб-сервер.
Поэтому, когда я запускаю его на локальном хосте, все работает, как ожидалось. Когда я устанавливаю для Debug значение FALSE, добавляю IP-адрес Jetson в ALLOWED_HOSTS и пытаюсь получить доступ к сети с другого компьютера, это происходит: я вижу, что доступ к этой веб-камере осуществляется, потому что загорается индикатор веб-камеры. Я помещаю QR-код перед веб-камерой, и код появляется в текстовом поле в Интернете! НО видео нет (когда ALLOWED_HOSTS содержит видео localhost, есть там). Вывод фонового процесса, который собирает кадры камеры, дает следующую ошибку:
libv4l2: error setting pixformat: Device or resource busy
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline)
in cvCaptureFromCAM_GStreamer, file /home/nvidia/prototype/opencv/opencv-3.4.0/modules/videoio/$
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)):raised OpenCV exception:
/home/nvidia/toyota_prototype/opencv/opencv-3.4.0/modules/videoio /src/cap_gstreamer.cpp:890: error: (-2)$
in function cvCaptureFromCAM_GStreamer
Я не буду публиковать здесь весь код, так как не знаю, в чем именно проблема. Есть ли у кого-нибудь идеи, где может быть проблема?
Спасибо за помощь!