OpenCV录制的网络摄像头视频比现实的Python更快

从网络摄像头录制视频时遇到一些问题。因为我正在做一个实验并同时录制视频,所以真正的秒必须与录制的秒相同,这一点非常重要。 我正在使用的代码是这样的:

def record_video(self,path_video="test"):
    vid_capture = cv2.VideoCapture(0)
    #vid_capture.set(cv2.CAP_PROP_FPS,20)
    fps=vid_capture.get(cv2.CAP_PROP_FPS)
    #vid_capture.set(cv2.CAP_PROP_BUFFERSIZE,2)
    vid_cod = cv2.VideoWriter_fourcc(*'XVID')
    output = cv2.VideoWriter("experiment_videos/" + path_video + ".avi",vid_cod,fps,(640,480))
    x = threading.Thread(target=socket_trigger)
    x.daemon = True
    x.start()
    print("Waiting")
    while(start==0):
        ret_cam,frame_cam = vid_capture.read()
    while (True):
        ret_cam,frame_cam = vid_capture.read()
        output.write(frame_cam)
            # Close and break the loop after pressing "x" key
        if cv2.waitKey(1) & 0XFF == ord('x'):
            break
        if end== 1:
            break
    # close the already opened camera
    vid_capture.release()
    #cap.release()
    # close the already opened file
    output.release()
    # close the window and de-allocate any associated memory usage
    cv2.destroyAllWindows()

所有代码均正常运行,我收到的标志变量正常运行。例如,如果我录制了5分钟(实时)的视频,则输出可能是4:52,4:55甚至是5:00。只是不准确。

我认为这是因为我写了一个30fps的输出文件(这就是vid_capture.get(cv2.CAP_PROP_FPS的返回值),而我的相机有时却以更少的帧数进行记录(比如说28,29)。

我不知道该怎么办,我曾尝试将摄像机的fps设置为20,但没有用(#vid_capture.set(cv2.CAP_PROP_FPS,20))。

有什么想法吗?对我来说至关重要的匹配时间,我唯一的工作就是录​​制网络摄像头。 谢谢大家 海梅

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...