2012-12-12 28 views
5

我目前正在研究涉及讀取mp4視頻文件的項目。 我遇到的問題是它在Windows 7機器中使用Python 2.7(32位),OpenCV 2.4.3(cv2.pyd)。使用OpenCV 2.4.3,Windows 7機器上的Python 2.7無法打開「.mp4」視頻文件

的代碼片段如下:

try: 
     video = cv2.VideoCapture("video.mp4") 
except: 
     print "Could not open video file" 
     raise 
print video.grab() 

video.grab()」 總是返回false:這意味着它不會讀取文件 「video.mp4」 但是,當我們嘗試這個辦法:

try: 
     video = cv2.VideoCapture("video.avi") 
except: 
     print "Could not open video file" 
     raise 
print video.grab() 

video.grab()」返回true:表示它能夠讀取「.avi」文件。

另一個是我們已經在Linux和Mac上嘗試了這個相同的片段,它似乎工作正常,這意味着它能夠讀取mp4文件和avi文件。

此問題類似於this problemthis problem。兩者仍然沒有明確可行的答案。

除了僅使用Linux或Mac進行編程之外,我將不勝感激任何幫助或解決方法,因爲我需要在所有三個系統上工作。

+0

我正在處理這個問題。有一個優雅的解決方案嗎? – madman2890

回答

0

您的mp4可能具有您的系統不支持的編解碼器(或者opencv不支持),而您的avi編解碼器可能受支持。另外如果opencv使用libav解碼,你應該安裝它。

+0

我不知道系統是否不支持mp4。當我在Mac和Linux中使用opencv + python時,我可以輕鬆讀取mp4。至於編解碼器,我可以使用任何其他軟件觀看mp4。從libav開始,它附帶了opencv軟件包,並且還從FFmpeg網站下載了一個新的libav for Windows ...我只是不知道我是否安裝了它...你知道如何安裝libav和其他用於opencv + python的庫嗎? –

+0

如果我可以打開相同的視頻文件並在播放器內播放(我運行Windows 10),是否可以安全地說我的系統支持mp4? – ilya1725

14

我已經收到了同樣的問題,通過這個步驟解決:

檢查OpenCV的Python版本

>>> from cv2 import __version__ 
>>> __version__ 
'2.4.0' 

,然後將您opencv_ffmpeg.dllC:\Python27\並將其重命名相關的OpenCV的Python版本。在我的情況下,我不得不將它重命名爲opencv_ffmpeg240.dll

更新:在Windows上,您可以在OpenCV安裝的build文件夾中找到opencv_ffmpeg DLL。例如:C:\dev\opencv\build\x86\vc12\bin

然後,將opencv_ffmpeg<version>.dll文件複製並粘貼到Python安裝的根文件夾中。

+0

謝謝!我最初是從python 3開始的,直到我注意到我所關注的一些博客被ref'd ref了2.7。這個簡單的事情做到了這一點。 –

2

我在Windows 7操作系統下使用OpenCV版本2.4.11和Python 2.7遇到了這個問題。我無法打開和操作MP4文件,但能夠打開AVI文件。

在我的情況下,解決方案是從我的OpenCV安裝的build文件夾複製opencv_ffmpeg2411.dll文件,並將其粘貼到我的Python安裝的根文件夾中。所以,就我而言,DLL文件位於「C:\ dev \ opencv \ build \ x86 \ vc12 \ bin」中,並將其複製到「C:\ Program Files(x86)\ Python2.7」。

0

我和我的.mpg視頻文件有同樣的問題。無法在openCV中打開它。

我複製了C:\OpenCV\build\bin folder into the c:\python27文件夾中的openCv_ffmpeg330.dll

工作!

相關問題