无法读取opencv3.2中的mp4(ubuntu,python3)

时间:2017-03-19 11:03:01

标签: python opencv ubuntu ffmpeg cmake

我的opencv安装遇到问题,无法打开mp4视频。我的系统是ubuntu 16.04,64bit,opencv3.2来自python 3.5。

VideoCapture.read返回FalseNone

此问题还有其他问题,但它们针对的是不同的平台或不同的opencv版本。

显然,我错过了正确的编解码器。 所以我从我的构建目录运行make uninstall,用apt清除opencv*并再次从源构建。这次确保在编译之前安装了ffmpeg

以下是我的步骤:

  • 克隆opencv和opencv_contrib
  • cd opencv/
  • mkdir build
  • cd build
  • cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=ON ..
  • make -j 8
  • sudo make install

我检查了cmake的输出,ffmpeg就在那里:

Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      YES
--       avcodec:                   YES (ver 56.60.100)
--       avformat:                  YES (ver 56.40.101)
--       avutil:                    YES (ver 54.31.100)
--       swscale:                   YES (ver 3.1.101)
--       avresample:                NO
--     GStreamer:                   NO
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     OpenNI2:                     NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     Aravis SDK:                  NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    NO/YES
--     XIMEA:                       NO
--     Xine:                        NO
--     gPhoto2:                     NO

但问题仍然存在。我该如何解决这个问题?

更新

我不得不从/ usr / local手动删除一些.so文件。

然后我安装了所有与avi相关的编解码器。 https://wiki.ubuntuusers.de/Codecs/ 加上libavcodec-extra和ffmpeg

然后我重新编译,现在它可以工作。

1 个答案:

答案 0 :(得分:1)

mp4视频通常包含以h264编码的视频。这是获得专利的编解码器之一,有些可能需要许可证,这就是为什么默认情况下它们不能在ubuntu中发布。您需要安装libavcodec-extra才能在ffmpeg中启用对h264的支持。