2016-02-05 100 views
0

我被困在試圖在openCV中打開mpeg4視頻文件。使用此命令的ffmpeg生成的視頻文件:在openCV 3中打開ffmpeg/mpeg-4 avi 2.7 python 2.7

ffmpeg -y -f rawvideo -vcodec rawvideo -s 2048x2048 -r 30 -pix_fmt gray -i \\.\pipe\pipe1 -qv 5 -vcodec mpeg4 out.avi 

我現在想開這樣

import cv2 
#avi_path is full path to avi 
cap = cv2.VideoCapture(avi_path) 
img1=cap.read() 

文件,但這個返回:假,無

相同的過程作品好,如果我使用libxvid進行編碼,但我想使用mpeg4,因爲它編碼速度更快(我需要同時編碼多個數據流)。

應該openCV能打開mpeg4編碼的avi文件嗎?

我使用openCV3和Python 2.7的Windows 64位

下,我還附上一個視頻的G點在面板XVID(左)編碼,我可以打開。和一個視頻編碼mpeg4(右),我無法打開。 enter image description here 我懷疑一些LAV分離器/解碼器設置可能會干擾? - 但我對這個問題的理解不夠深刻。

這是我ffprobe輸出,用於額外的ffmpeg參數編碼的MPEG4文件「-vtag XVID」作爲一個評論所說的Mulvya

ffprobe version N-75474-g74e4948 Copyright (c) 2007-2015 the FFmpeg developers 
    built with gcc 4.9.3 (GCC) 
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib 
    libavutil  55. 2.100/55. 2.100 
    libavcodec  57. 3.100/57. 3.100 
    libavformat 57. 2.100/57. 2.100 
    libavdevice 57. 0.100/57. 0.100 
    libavfilter  6. 6.100/6. 6.100 
    libswscale  4. 0.100/4. 0.100 
    libswresample 2. 0.100/2. 0.100 
    libpostproc 54. 0.100/54. 0.100 
Input #0, avi, from 'out1b.avi': 
    Metadata: 
    encoder   : Lavf57.2.100 
    Duration: 00:00:23.50, start: 0.000000, bitrate: 2049 kb/s 
    Stream #0:0: Video: mpeg4 (Simple Profile) (xvid/0x64697678), yuv420p, 2048x2048 [SAR 1:1 DAR 1:1], 2044 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc 
+1

嘗試增加'-vtag xvid'作爲輸出選項FFmpeg的命令 – Mulvya

+0

不幸的是沒有工作對我來說 – jlarsch

+0

粘貼ffprobe用於標記粘貼到原來的職位 – Mulvya

回答

1

嘗試增加-vtag xvid作爲輸出選項FFmpeg的命令

編解碼器標籤告訴播放器/處理器使用的輸入視頻流解碼器哪個。儘管XVid和MPEG4是同一編解碼器的編碼器,但OpenCV可能無法識別標記爲mpeg4的視頻。

0

,或者你可以做別的事情,我巧合想通了:

首先,你當然知道你的OpenCV前的版本:2.4.11

然後進入C:\ OpenCV的\建設\ 86 \ VC12 \ BIN,複製opencv_ffmpeg2411.dll,並粘貼在Python的根目錄例如:C:\ Python27

**如果DLL文件是opencv_ffmpeg.dll只是沒有版本,你應該鍵入自己被opencv_ffmpeg(您的版本不點).dll文件

瞧。

希望我幫

+0

我找到了opencv_ffmpeg2412_64.dll 我將它複製到python27文件夾,並將其重命名爲opencv_ffmpeg300.dll和opencv_ffmpeg300_64.dll,但它不起作用 – jlarsch

+0

@jlarsch嘗試下載此http://originaldll.com/file/ffmpeg.dll/ 17422.html文件並執行前面提到的相同步驟。如果它不起作用,請嘗試按原樣複製並粘貼原始DLL文件。告訴我是否有什麼變化 – Tes3awy

+0

@jlarsch有一些奇怪的順便說一句,從你以前的評論看來,你的電腦上安裝的OpenCV版本是3.0.0,但是你發現DLL文件名爲opencv_ffmpeg2412_64.dll,這很奇怪,因爲當你提取它與它兼容的DLL文件一起提供的OpenCV,但嘗試我在之前的評論中寫的並保持更新。 – Tes3awy