Почему я не могу использовать FFMPEG в качестве серверной части OpenCV?

#opencv #ffmpeg #gstreamer

Вопрос:

Я хотел бы использовать FFMPEG в качестве бэкенда для OpenCV, но я не могу заставить его работать. Используемая операционная система-CentOS8. Версии OpenCV и FFMPEG-3.4.5 и 2.8.17 соответственно.

Информация о сборке OpenCV показывает, что FFMPEG=ВКЛЮЧЕНО, поэтому OpenCV, похоже, распознает библиотеку FFMPEG.

Это часть видео ввода-вывода информации о сборке OpenCV.

 Video I/O: DC1394: NO FFMPEG: YES  avcodec: YES (58.91.100)  avformat: YES (58.45.100)  avutil: YES (56.51.100)  swscale: YES (5.7.100)  avresample: NO GStreamer: NO v4l/v4l2: YES (linux/videodev2.h)  

Однако в информационном сообщении, отображаемом во время выполнения, говорится

 [ INFO:0] VIDEOIO: Enabled backends(6, sorted by priority): GSTREAMER(1000); V4L2(990); CV_IMAGES(980); CV_MJPEG(970); FIREWIRE(960); UNICAP(950) OpenCV | GStreamer warning: your gstreamer installation is missing a required plugin(/builddir/build/BUILD/opencv-3.4.6/modules/videoio/src/cap_gstreamer.cpp:1823) OpenCV | GStreamer warning: GStreamer: unable to start pipeline(/builddir/build/BUILD/opencv-3.4.6/modules/videoio/src/cap_gstreamer.cpp:872)  

Я также не понимаю, почему используется Gstreamer, если он не включен в информации о сборке.

В чем может быть причина? Пожалуйста, сообщите мне, если вы знаете больше.

Ответ №1:

Даже если вы предпочтете FFMPEG=ON, нет никакой гарантии, что FFMPEG будет включен в процессе сборки opencv. Потому что OpenCV проверит все зависимости. Пожалуйста, установите все зависимости и попробуйте установить недостающие части, такие как GStreamer, avresample.