繁体   English   中英

如何修复opencv python cv2.VideoCapture rtsp onvif“服务器回复中的非匹配传输”错误?

[英]How to fix opencv python cv2.VideoCapture rtsp onvif “nonmatching transport in server reply” error?

我在Windows上使用python 3.6.4,通过pip安装opencv(3.4)。 这是我正在使用的代码:

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”,视频将使用相同的rtsp地址和VLC一样运行。 使用cv2.VideoCapture(0)也适用于我的网络摄像头。

试图将文件opencv_ffmpeg340.dll复制到所有路径文件夹中,但仍无济于事。 还检查了构建和所有视频I / O显示为YES,除了gstreamer。 我没有想法。

我使用微软的VCPKG将OPENCV安装到Windows 10上。 之后,OPENCV工作正常 - 除了它不会打开视频文件。

没有成功,我尝试了很多建议。 最后,对我有用的东西非常简单。 我在Windows环境系统变量中将opencv的BIN文件夹作为PATH包含在内。 而已。 现在,视频文件打开并播放得很好。

我刚刚遇到这个问题并且在挖掘之后看起来像OPENCV 3.1+默认为TCP用于RTSP传输(我的ESCAM QF600仅支持RTSP over UDP)。 您可以通过将环境变量OPENCV_FFMPEG_CAPTURE_OPTIONS设置为某些内容(例如,虚拟)来防止这种情况发生。

为了完整; 有关可以设置的所有选项,请参阅https://ffmpeg.org/ffmpeg-protocols.html 键和值用';'分隔 和对通过'|'分隔。

违规代码从cap_ffmpeg_impl.hpp的第809行开始( https://github.com/opencv/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp

以下帖子的道具,以便向我发送正确的方向:

ffmpeg rtsp错误:服务器回复中的不匹配传输

无法获得RTSP流 - 不匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM