我被困试图在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编码的视频(右),我无法打开。
我怀疑某些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/