我正在尝试使用 OpenCV 和 Python 使用 RTSP URI 连接到 IP 摄像机 (Dahua)。我在下面添加了一个示例代码(用户名、密码和 IP 在单独的变量中提供),结果是
[rtsp @ 0x55cc3715c600] method OPTIONS failed: 401 Unauthorized
。使用 VLC,我可以进行连接,但只有在单独的对话框中输入密码后才能进行连接,即使密码已在 URI 中提供。
我该如何继续?
address = f'rtsp://{username}:{password}@{ip}'
cap = cv2.VideoCapture(address)
发现问题,与密码有特殊字符(%)有关,该字符应该是百分比编码(%25)。
如果您的密码包含
!"#$%&'()*+,-./:;<=>?@[\]^_{|}~
之类的字符,那么问题可能出在cv2.VideoCapture()
。
您可以尝试使用imutils库来解决这个问题。这对我有用。
from imutils.video import VideoStream
cap = VideoStream(video_src).start()
frame = cap.read()
我也遇到了同样的问题,因为我的密码中有问号(?),所以我只是将其替换为编码值%3F。有效!