首先,我想对我正在做的事情发表评论。在
我有一个IP摄像机通过一个带以太网线的路由器连接到我的网络(FOSCAM 9800p),我试图用RTSP协议录制一段视频。我未来的打算是用opencv在中间添加一个小的视频处理,但目前我想做一些测试来简单地记录下来。在
主要的问题是相机每秒传送的帧数是可变的,也就是说,有时它传送到18帧,其他的传送到22帧,依此类推。当以每秒帧数的固定速率录制视频时,最终发生的情况是,视频播放的速度超过了应有的速度
奇怪的是,当我用opencv get(CAP_PROP_FPS)运行时,它返回了一个很大的值,比如180000.0
为了解决这个问题,我们要做的是读取帧并将它们放入队列中。从另一个由定时器事件()为了获得固定的帧速率,我们阅读它们并尝试以固定的时间间隔写入视频。在
代码如下:video_capture = cv2.VideoCapture("rtsp://"+user+":"+password+"@"+ip+":"+str(port)+"/videoMain")
if (video_capture.isOpened() == False):
print("Unable to read camera feed")
sys.exit()
frame_width = int(video_capture.get(3))
frame_height = int(video_capture.get(4))
video_writer =cv2.VideoWriter