Python-OpenCV-VideoCapture:在windows上以毫秒为单位获取错误的帧时间戳
我试图在OpenCV中获取每个视频帧的毫秒数,并期望在windows上(如linux上)有相同的行为: 在Linux/IPython上:Python-OpenCV-VideoCapture:在windows上以毫秒为单位获取错误的帧时间戳,windows,opencv,Windows,Opencv,我试图在OpenCV中获取每个视频帧的毫秒数,并期望在windows上(如linux上)有相同的行为: 在Linux/IPython上: In [4]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC) Out[4]: 41.522491349480966 In [5]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC) Out[5]: 83.044982698961
In [4]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[4]: 41.522491349480966
In [5]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[5]: 83.04498269896193
In [6]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[6]: 124.5674740484429
In [16]: cv2.__version__
Out[16]: '2.4.8'
在Win7/IPython上:
In [5]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[5]: 1.0
In [6]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[6]: 2.0
In [7]: ret,frame = v.read(); v.get(cv2.cv.CV_CAP_PROP_POS_MSEC)
Out[7]: 3.0
In [14]: cv2.__version__
Out[14]: '2.4.13'
请注意,Windows获得了一个Anaconda环境,其中OpenCV 2.4.13(cv2.pyd)被复制到conda/site软件包中
我猜环境中唯一的区别就是编码器和/或它的库。当我在Windows和UbuntuLinux中播放编码器(WMV2)时,我已经看到它在VLC中正确显示
是否有任何调试OpenCV(C++)ffmpeg dll调用的指针值得赞赏
编辑:目前,我们正在使用ffmpeg解决方案,IMO是一个更好的解决方案我还没有找到解决方案,我已经找到了一个解决方法(使用ffmpeg获取帧时间戳),因为我的用例也需要来自实时摄像机的时间戳,而OpenCV不会提供。将不得不通过提交类似的C++代码来检查OpenCV论坛。或者,如果你可以使用FFMPEG作为中间来流视频帧和时间戳,你也可以参考我的解决方案。