Python - OpenCV - VideoCapture:在Windows上获取不正确的帧时间戳(以毫秒为单位)

时间:2017-01-06 14:02:32

标签: windows opencv

我试图在OpenCV中获取每个视频帧的毫秒数,并期望在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-packages

我想环境的唯一区别就是编码器和/或它的库。我已经看到,当我在Windows和Ubuntu Linux中播放编码器时,编码器(WMV2)在VLC中正确显示。

是否有任何关于调试OpenCV(C ++)ffmpeg dll调用的指针?

编辑:目前已使用ffmpeg与此解决方案争论,IMO是更好的解决方案
How to fetch both live video frame and timestamp from ffmpeg to python on Windows

0 个答案:

没有答案