通过 opencv+ffmpeg 从 RTSP 流读取会导致“方法设置失败:501 未实现”

Reading from RTSP stream via opencv+ffmpeg results in "method SETUP failed: 501 Not Implemented"

提问人:bearyTheBear 提问时间:11/7/2023 最后编辑:Christoph RackwitzbearyTheBear 更新时间:11/7/2023 访问量:57

问:

我设置了相机并在本地网络中运行。 我可以通过 VLC 看到视频流,没有任何问题。 现在我正在尝试运行以下代码以使用 python + opencv 观察流。

我正在使用:

  • 蟒蛇 3.11
  • opencv-python 4.8.1.78
import cv2

cap = cv2.VideoCapture(
    "rtsp://192.168.234.127:8554/h264", 
)

while cap.isOpened():
    status, frame = cap.read()
    
    cv2.namedWindow("frame", cv2.WINDOW_NORMAL)
    cv2.imshow("frame", frame)
    
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

这会导致脚本卡住,并在后台发生以下错误:.请注意,返回 .cap.read()[rtsp @ 0000020008b7cd40] method SETUP failed: 501 Not Implementedcap.isOpened()True

我试过了:

  • 从 3.12 降级到 Python 3.11
  • 在 Jupyter Notebook 中运行此功能
  • 直接从脚本运行此操作
  • 强制重新安装 opencv-python
  • 使用“rtsp://192.168.234.127:8554/jpeg”而不是“rtsp://192.168.234.127:8554/h264”
    • 请注意,这两种方法都适用于 VLC 播放器

编辑:

  • 简化代码,结果相同。
python opencv ffmpeg 视频流 rtsp

评论

1赞 Christoph Rackwitz 11/7/2023
该错误来自 FFMPEG。从命令行使用 ffmpeg/ffplay 读取流。那也可能失败。这意味着这是一个 FFMPEG 问题,而不是 OpenCV 问题。

答:

2赞 Pyjava 11/7/2023 #1

Http 错误 501 - 服务器不支持请求方法,无法处理。尝试检查您的服务器、相机。尝试将 http 与 mp4 一起使用或喜欢它。

评论

0赞 Community 11/8/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 bearyTheBear 11/9/2023
这实际上是我现在的解决方法。在我看来,与相机交互一定存在一些错误(或缺少功能),就像我的脚本一样。当我使用另一台相机时,相同的脚本效果很好。