Как исправить ошибку opencv python cv2.VideoCapture rtsp onvif "несоответствующий транспорт в ответе сервера"?

Я на Windows, используя Python 3.6.4, установил opencv (3.4) через pip. Вот код, который я использую:

import numpy as np
import cv2

cap = cv2.VideoCapture('rtsp://192.168.15.116:554/onvif1')

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Я получаю следующую ошибку:

[rtsp @ 03858a40] Nonmatching transport in server reply
warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:808)
warning: rtsp://192.168.15.116:554/onvif1 (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:809)

Я могу перейти к cmd и набрать "ffplay rtsp://192.168.15.116/onvif1", и видео будет работать так же, как и в VLC, используя тот же адрес rtsp. Использование cv2.VideoCapture(0) также работает с моей веб-камерой.

Пробовал копировать файл opencv_ffmpeg340.dll во все папки пути, но все равно безрезультатно. Также проверил сборку и все видео ввода / вывода отображаются с YES, кроме gstreamer. У меня нет идей.

2 ответа

Я установил OPENCV на Windows 10, используя VCPKG от Microsoft. После этого OPENCV работал нормально - за исключением того, что он не будет открывать файлы видео.

Без успеха я перепробовал много предложений. Наконец, то, что работало для меня, было очень ПРОСТО. Я включил папку BIN opencv в качестве PATH в системные переменные среды Windows. Вот и все. Теперь видео файлы открываются и воспроизводятся просто отлично.

Я только что столкнулся с этой проблемой, и после копания он выглядит как OPENCV 3.1+ по умолчанию TCP для транспорта RTSP (мой ESCAM QF600 поддерживает только RTSP через UDP). Вы можете предотвратить это, установив переменную окружения OPENCV_FFMPEG_CAPTURE_OPTIONS в что-то (например, фиктивное).

Для полноты картины; см. https://ffmpeg.org/ffmpeg-protocols.html для всех параметров, которые могут быть установлены. Ключи и значения разделяются знаком ";" и пары разделяются через '|'.

Оскорбительный код начинается со строки 809 в cap_ffmpeg_impl.hpp ( https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp).

Реквизиты для следующих сообщений для отправки мне в нужном направлении:

ffmpeg rtsp error: несоответствующий транспорт в ответе сервера

Не могу получить поток RTSP - несоответствие

Другие вопросы по тегам