Не удается отправить видеопоток udp в даркнет через /dev/video10 в моем контейнере docker

#docker #opencv #gstreamer

Вопрос:

Я создаю систему распознавания видео, которая получает поток udp через Интернет и анализирует его в контейнере docker.

Я открываю поток udp с помощью следующей команды gstreamer на сервере, но за пределами контейнеров docker:

gst-launch-1.0 -v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! queue ! v4l2sink device=/dev/video10 sync=false

Я проверил поток, также посмотрев на него, и все в порядке.

Поэтому я передаю этот поток в виртуальный интерфейс: /dev/video10

теперь в моем darknet_video.py файл, который запускается в моем контейнере docker, я пытаюсь получить поток несколькими способами:

 cap = cv2.VideoCapture("/dev/video10")

cap = cv2.VideoCapture("/dev/video10", cv2.CAP_GSTREAMER)

cap = cv2.VideoCapture("/dev/video10", cv2.CAP_V4L2)

cap = cv2.VideoCapture("/home/yolotest/Politievest/test/5gtest_h264_480p.mp4", cv2.CAP_GSTREAMER)

cap = cv2.VideoCapture("udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! queue ! video/x-raw ! appsink", cv2.CAP_GSTREAMER)

cap = cv2.VideoCapture('videotestsrc ! video/x-raw,width=1920,heigh=1080 ! videoconvert ! video/x-raw ! appsink')

cap = cv2.VideoCapture("udpsrc port=9000 caps = 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96' ! rtph264depay ! decodebin ! videoconvert ! appsink". cv2.CAP_GSTREAMER)

 

Скрипт python и контейнер docker запускаются с помощью этой команды:

sudo docker run --name detection -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix --device /dev/video10 --gpus all --rm detection:0.1 python3 darknet_video.py --dont_show

Мне не удалось запустить поток в даркнете, я постоянно получаю эту ошибку:

[ОШИБКА:0] глобальный /tmp/pip-req-build-s58vuwxh/opencv/modules/videoio/src/cap.cpp (587) открыть VIDEOIO(CV_IMAGES): возникло исключение OpenCV: OpenCV(4.5.3) /tmp/pip-req-сборка-s58vuwxh/opencv/модули/videoio/src/cap_images.cpp:207: ошибка: (-215:Утверждение не выполнено) !имя файла.пустое() в функции ‘icvExtractPattern’

Может ли кто-нибудь объяснить мне, почему я получаю эту ошибку?

Надеюсь, вы сможете указать мне на мою ошибку, спасибо!

Комментарии:

1. print(cv2.getBuildInformation()) и добавьте результат в свой пост