Python-OpenCV-VideoCapture:在windows上以毫秒为单位获取错误的帧时间戳

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

我试图在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.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作为中间来流视频帧和时间戳,你也可以参考我的解决方案。