【发布时间】:2020-02-23 02:57:51
【问题描述】:
尝试从 IP 摄像机读取视频流时,使用:
stream = cv2.VideoCapture(src)
(grabbed, frame) = stream.read()
grabbed 返回 True,但有时帧已损坏(可能是由于 CPU 负载过高)。终端上显示如下内部 Opencv 错误:
[h264 @ 0x25e99400] error while decoding MB 87 29, bytestream -5
有没有办法捕捉到这个错误?请注意,我尝试了明显的try:except 和cv2.error 等。在这种帧损坏的情况下,最好重新启动与相机的连接。
【问题讨论】:
-
不是 OpenCV 错误,那是 ffmpeg error log message... 所以没有什么可以捕捉到的。
-
谢谢,有没有办法从 Python API 捕获这个 ffmpeg 错误?
-
相信您可以使用
isOpened()来检查相机是否损坏。它允许您跳过损坏的视频并继续下一个,但仍会打印错误消息。if stream.isOpened():然后尝试读取帧 -
嗨@nathancy,感谢您的评论。不幸的是,
isOpened()不是一个好的选择,因为 RTSP 流已经初始化并且它总是会返回True。该问题是由于处理期间的高 CPU 负载而不是在初始化时发生的。
标签: python opencv ffmpeg h.264