[Python] Error throwing while building opencv with gstreamer support

Discussão em 'Python' iniciado por Stack, Novembro 22, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to build opencv from source to enable GStreamer support. I have followed this instructions here, but an error occurred. More specifically, the error occurred in this step:

    make -j$(nproc)


    The overall procedure is this one:

    sudo apt update
    sudo apt install -y \
    build-essential cmake git pkg-config \
    libjpeg-dev libtiff-dev libpng-dev \
    libavcodec-dev libavformat-dev libswscale-dev \
    libv4l-dev libxvidcore-dev libx264-dev \
    libgtk-3-dev libatlas-base-dev gfortran \
    python3-dev python3-numpy \
    libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    cd ~
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    cd opencv
    git checkout 3.4.18 # I used this version because I had the same one working in venv on a pip version
    cd ../opencv_contrib
    git checkout 3.4.18
    cd ~/opencv
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D WITH_GSTREAMER=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
    -D PYTHON3_EXECUTABLE=$(which python3) \
    -D BUILD_opencv_python3=ON \
    -D BUILD_EXAMPLES=OFF ..
    make -j$(nproc) # <- this is where the error is thrown
    sudo make install
    sudo ldconfig


    The error is this one:

    [ 43%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx2.cpp.o
    [ 43%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx512_skx.cpp.o
    [ 44%] Linking CXX shared library ../../lib/libopencv_dnn.so
    [ 44%] Built target opencv_dnn
    [ 44%] Linking CXX shared library ../../lib/libopencv_features2d.so
    [ 44%] Built target opencv_features2d
    make: *** [Makefile:166: all] Error 2


    and as I understand it there is an issue with libopencv_features2d.so library. Inside the build folder there is a lib subfolder which contains libopencv_features2d.so (it is a symlinc to libopencv_features2d.so.3.4.18 in reality).

    I tried to apply some flags to the CMake to give more information and to my surprise the process seemed to move forward. I am not sure if it actually fixed the error or just moved on but it reached a point where it doesn't get any better.

    [ 44%] Built target opencv_dnn
    [ 44%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o
    [ 46%] Built target opencv_calib3d
    [ 46%] Built target opencv_text
    [ 46%] Built target opencv_stereo
    [ 46%] Built target opencv_structured_light
    [ 47%] Built target opencv_rgbd
    [ 48%] Built target opencv_objdetect
    [ 49%] Built target opencv_aruco
    [ 50%] Built target opencv_xfeatures2d
    [ 50%] Built target opencv_bgsegm
    [ 52%] Built target opencv_ximgproc
    [ 53%] Built target opencv_xobjdetect
    [ 54%] Built target opencv_face
    [ 56%] Built target opencv_datasets
    [ 57%] Built target opencv_stitching
    [ 58%] Built target opencv_optflow
    [ 61%] Built target opencv_tracking
    In file included from /home/gorfanidis/Downloads/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:79,
    from /home/gorfanidis/Downloads/opencv/modules/videoio/src/cap_ffmpeg.cpp:49:
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:80:6: warning: "LIBAVCODEC_VERSION_INT" is not defined, evaluates to 0 [-Wundef]
    80 | #if (LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(54, 51, 100))
    | ^~~~~~~~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:270:5: warning: "LIBAVCODEC_VERSION_INT" is not defined, evaluates to 0 [-Wundef]
    270 | #if LIBAVCODEC_VERSION_INT>0x000409
    | ^~~~~~~~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:277:5: warning: "LIBAVCODEC_VERSION_INT" is not defined, evaluates to 0 [-Wundef]
    277 | #if LIBAVCODEC_VERSION_INT>((50<<16)+(1<<8)+0)
    | ^~~~~~~~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:286:5: warning: "LIBAVCODEC_VERSION_INT" is not defined, evaluates to 0 [-Wundef]
    286 | #if LIBAVCODEC_VERSION_INT>((51<<16)+(11<<8)+0)
    | ^~~~~~~~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:295:5: warning: "LIBAVCODEC_VERSION_INT" is not defined, evaluates to 0 [-Wundef]
    295 | #if LIBAVCODEC_VERSION_INT>=((51<<16)+(49<<8)+0)
    | ^~~~~~~~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:81:26: error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
    81 | #define AV_CODEC_ID_H264 CODEC_ID_H264
    | ^~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:146:7: note: in expansion of macro ‘AV_CODEC_ID_H264’
    146 | { AV_CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
    | ^~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:81:26: error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
    81 | #define AV_CODEC_ID_H264 CODEC_ID_H264
    | ^~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:147:7: note: in expansion of macro ‘AV_CODEC_ID_H264’
    147 | { AV_CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
    | ^~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:81:26: error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
    81 | #define AV_CODEC_ID_H264 CODEC_ID_H264
    | ^~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:148:7: note: in expansion of macro ‘AV_CODEC_ID_H264’
    148 | { AV_CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
    | ^~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:81:26: error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
    81 | #define AV_CODEC_ID_H264 CODEC_ID_H264
    | ^~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:149:7: note: in expansion of macro ‘AV_CODEC_ID_H264’
    149 | { AV_CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
    | ^~~~~~~~~~~~~~~~
    /home/gorfanidis/Downloads/opencv/modules/videoio/src/ffmpeg_codecs.hpp:81:26: error: ‘CODEC_ID_H264’ was not declared in this scope; did you mean ‘AV_CODEC_ID_H264’?
    81 | #define AV_CODEC_ID_H264 CODEC_ID_H264
    ...


    After that there is large display of similar messages.

    So, is there any action I could take to resolve the issue? Do I need to update any path variable for example?

    Continue reading...

Compartilhe esta Página