#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())
и добавьте результат в свой пост