【发布时间】:2017-06-22 12:06:08
【问题描述】:
我运行了以下命令来编译opencv:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/Users/user/work/repo/venv/local/ -D INSTALL_C_EXAMPLES=OFF -D PYTHON_PACKAGES_PATH=/Users/user/work/repo/venv/lib/python2.7/site-packages -D INSTALL_PYTHON_EXAMPLES=ON -D PYTHON_EXECUTABLE=/Users/user/work/repo/venv/bin/python -D WITH_CUDA=OFF -D FFMPEG_INCLUDE_DIR=/usr/include/ffmpeg -D FFMPEG_LIB_DIR=/usr/lib64 -D WITH_FFMPEG=YES ..
导致:
-- Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: NO
-- FFMPEG: NO
-- avcodec: YES (ver 57.75.100)
-- avformat: YES (ver 57.63.100)
-- avutil: YES (ver 55.45.100)
-- swscale: YES (ver 4.3.101)
-- avresample: NO
那么任何使用 ffmpeg 作为捕获源对 opencv 的 Python 调用都会失败。
虽然我设置了正确的路径,但调用 ffmpeg 命令行返回:
$ ffmpeg
ffmpeg version n3.0.5-19-ga71d22d-rpmfusion Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr --bindir=/usr/local/bin/ --shlibdir=/usr/lib64 --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --extra-cflags='-O2 -g' --extra-version=rpmfusion --enable-bzlib --enable-nonfree --enable-libopenjpeg --enable-libx264 --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --enable-runtime-cpudetect --arch=x86_64
在那些目录中查找确实会给我 cmake 输出中列出的编解码器列表。
我在 OSX Sierra,opencv 和 ffmpeg 都是手动编译的。
我可以很好地运行 ffmpeg 命令行来转换我需要的任何视频文件。只要我使用默认的捕获源而不是 cv2.CAP_FFMPEG,我也可以启动 Python shell 并使用 opencv 导入并打开视频正常工作。这意味着我现在只能打开 mp4 文件。
【问题讨论】:
-
要编译你可能需要 ffmpeg 的源代码或至少头文件
*.h- 也许有ffmpeg-dev包只有.h 文件。