我的Opencv版本是4.5.4,使用gstreamer lib编译。
在我的情况下,我正在获取流视频帧。流视频时间和获取视频时间(cv2.VideoCapture)之间存在差距。如果虽然流式传输下一个视频,但 cv2.VideoCapture 无法获取下一个流式视频的帧,因为 opencv 没有到达最后一帧。
如何解决? (当我使用opencv版本3.4.0时,我没有遇到这个问题。)
我的代码(不使用多进程/线程)
def connect_streaming(rtsp_url):
while True:
video_cap = cv2.VideoCapture(rtsp_url, cv2.CAP_GSTREAMER)
while video_cap.isOpened():
ret, frame = video_cap.read()
if not ret:
video_cap.release()
break
...
我解决了。 我认为这是使用线程获取流视频帧的最佳方法。
希望很多遇到同样问题的人在阅读完本文后能够解决问题。