【问题标题】:OpenCV streamming ip camera always return FalseOpenCV 流式传输 ip 相机总是返回 False
【发布时间】:2025-11-27 11:10:01
【问题描述】:

到目前为止,我已经使用 OpenCV 从 Raspberry pi + pi 相机流式传输 ip 相机。我想使用编解码器 H.264 保存来自 ip camera 的视频,但它不起作用。我从这篇帖子https://github.com/skvark/opencv-python/issues/100 中得知,只有手动构建的 opencv 库才能支持 H264 编解码器。 所以我按照这个链接手动构建 opencv https://www.learnopencv.com/install-opencv3-on-ubuntu/ 并成功了。 但是当我使用手动构建的 opencv 时,我无法再访问我的 ip cameracap.open() 总是返回 None。这是我的代码:

import cv2
cap = cv2.VideoCapture("http://10.10.1.240:8081/")
while True:
    ret, frame = cap.read()
    frame2 = cv2.flip(frame, 1)
    cv2.imshow("frame2", frame)
    key = cv2.waitKey(25)
    if key == 27:
        break
cap.release()
cv2.destroyAllWindows()

在上面的代码中,ret 总是 False。 在没有真正的解决方案和解释的情况下,我已经被困了 2 天。任何帮助都会得到帮助,谢谢!

【问题讨论】:

  • 您确定网址正确吗?您可以使用 VLC 媒体播放器流式传输此网址吗?通常,此类流是 rtsp 流。 Prebuild opencv 在较新版本中也可以解码 h264。
  • 嗨@Micka,对于您的问题:我确定网址是正确的,我使用的是覆盆子套件 + pi 摄像头模块 v2+ 运动服务,我仍然可以通过网络浏览器流式传输 ip 摄像头在网址:10.10.1.240:8081。而且我确实安装了最新版本(3.4.2)的prebuild opencv,但它不支持h264。当我尝试将 VideoWriter 与fourcc(*'X264') 一起使用并尝试将录制的视频另存为.mp4 时,我收到此错误:OpenCV: FFMPEG: tag 0x34363258/'X264' is not supported with codec id 27 and format ' mp4 / MP4(MPEG-4 第 14 部分)'
  • 默认不支持h264编码,但应该包含解码。

标签: python opencv video-capture ip-camera


【解决方案1】:

但是当我使用手动构建的 opencv 时,我无法再访问我的 ip camera,cap.open() 总是返回 none。

您是否尝试过在从源代码构建 opencv 后检查您的网络摄像头是否正常工作并出现在您的网络上?从源代码安装 opencv 后,您是否尝试使用任何媒体播放器从相机流式传输?

就您的代码而言,请尝试以下格式的 cv2.VideoCapture

cap = cv2.VideoCapture()
cap.open("rtsp://yourusername:yourpassword@172.16.30.248:555/Streaming/channels/2/")

你的用户名 - 给你的网络摄像机的用户名。 给定用户名的 yourpassword-password。

您也可以尝试以下方法。

cv2.VideoCapture("rstp://admin:PASSWORD@192.168.1.64/doc/page/previw.asp")

谢谢。

【讨论】:

  • 嗨@Ashish,谢谢你的回答!我确实尝试检查我的 ip 摄像头,因为我使用的是树莓派 + 运动服务,所以我可以使用网络浏览器在 url:10.10.1.240:8081 上流式传输我的摄像头,它工作正常。当我尝试使用上面的代码块使用 python 和 opencv 访问它时出现问题。
  • 嗨@kitetan612,您是否尝试修改代码并再次测试?
【解决方案2】:

确保您的计算机和相机的 IP 地址在同一子网掩码中。

【讨论】: