我被困试图在openCV中打开mpeg4视频文件。该视频文件是使用以下命令在ffmpeg中生成的:

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()

但这返回:False,没有

如果我改用libxvid进行编码,那么相同的程序也可以正常工作,但是我想使用mpeg4,因为它编码速度更快(我需要同时编码多个流)。

openCV应该能够打开mpeg4编码的avi文件吗?

我正在Windows 64位下使用openCV3和python 2.7

我还附加了可以打开的以xvid(左)编码的一个视频的GSpot面板。还有一个用mpeg4编码的视频(右),我无法打开。
python - 在openCV 3 python 2.7中打开ffmpeg/mpeg-4 avi-LMLPHP
我怀疑某些LAV分离器/解码器设置可能会干扰?! -但我对这些还不够了解,无法深入了解它。

这是我的ffprobe输出,用于mpeg4文件的ffprobe输出,该文件使用附加的ffmpeg参数'-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

最佳答案

尝试将-vtag xvid作为输出选项添加到ffmpeg命令

编解码器标签告诉播放器/处理器哪个解码器用于输入视频流。尽管XVid和MPEG4是同一编解码器的编码器,但是OpenCV可能无法识别标记为mpeg4的视频。

关于python - 在openCV 3 python 2.7中打开ffmpeg/mpeg-4 avi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35232123/

10-09 20:31