# Not able to get even basic gstreamer pipeline into python opencv

**URL:** <https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328>\
**Category:** Python\
**Tags:** gstreamer, build\
**Created:** [August 23, 2023, 6:07am UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328 "2023-08-23T06:07:31Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![startingcoder](https://avatars.discourse-cdn.com/v4/letter/s/f08c70/32.png) [@startingcoder](https://forum.opencv.org/u/startingcoder)\
**Post date:** [August 23, 2023, 6:07am UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/1 "2023-08-23T06:07:31Z")

</div>

I am trying to import a simple gstreamer pipeline into python opencv. The `gst-launch-1.0` works but I have not been able to integrate to opencv python.

**OS - Ubuntu 22.04**

# My basic code

```py
import cv2

# didn't work - this also
## `works on bash` - gst-launch-1.0 filesrc location="${videosrc}" ! qtdemux ! avdec_h264 ! videoconvert ! autovideosink
## videosrc = "/mnt/D/software_projects/video resources/Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film.mp4"
## pipeline = (f"filesrc location='{videosrc}' ! qtdemux ! avdec_h264 ! videoconvert ! appsink")

pipeline = "videotestsrc ! videoconvert ! appsink"
# pipeline = "videotestsrc ! video/x-raw,format=BGR ! videoconvert ! appsink"

cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)

if not cap.isOpened():
    print("Error: Could not open GStreamer pipeline.")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("Error: Unable to read frame")
        break
    cv2.imshow("GStreamer OpenCV", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

```

Here is my `cv2.getBuildInformation()`

```auto
General configuration for OpenCV 4.8.0 =====================================
  Version control: 4.8.0-dirty

  Platform:
    Timestamp: 2023-08-09T11:41:23Z
    Host: Linux 5.15.0-1042-azure x86_64
    CMake: 3.27.1
    CMake generator: Unix Makefiles
    CMake build tool: /bin/gmake
    Configuration: Release

  CPU/HW features:
    Baseline: SSE SSE2 SSE3
      requested: SSE3
    Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
      requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (16 files): + SSSE3 SSE4_1
      SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (0 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (7 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (35 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
      AVX512_SKX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

  C/C++:
    Built as dynamic libs?: NO
    C++ standard: 11
    C++ Compiler: /opt/rh/devtoolset-10/root/usr/bin/c++ (ver 10.2.1)
    C++ flags (Release): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
    C++ flags (Debug): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
    C Compiler: /opt/rh/devtoolset-10/root/usr/bin/cc
    C flags (Release): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
    C flags (Debug): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
    Linker flags (Release): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
    Linker flags (Debug): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  
    ccache: YES
    Precompiled headers: NO
    Extra dependencies: /lib64/libopenblas.so Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Test Qt5::Concurrent /usr/local/lib/libpng.so /lib64/libz.so dl m pthread rt
    3rdparty dependencies: libprotobuf ade ittnotify libjpeg-turbo libwebp libtiff libopenjp2 IlmImf quirc ippiw ippicv

  OpenCV modules:
    To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
    Disabled: world
    Disabled by dependency: -
    Unavailable: java python2 ts
    Applications: -
    Documentation: NO
    Non-free algorithms: NO

  GUI: QT5
    QT: YES (ver 5.15.0 )
      QT OpenGL support: NO
    GTK+: NO
    VTK support: NO

  Media I/O: 
    ZLib: /lib64/libz.so (ver 1.2.7)
    JPEG: libjpeg-turbo (ver 2.1.3-62)
    WEBP: build (ver encoder: 0x020f)
    PNG: /usr/local/lib/libpng.so (ver 1.6.40)
    TIFF: build (ver 42 - 4.2.0)
    JPEG 2000: build (ver 2.5.0)
    OpenEXR: build (ver 2.3.0)
    HDR: YES
    SUNRASTER: YES
    PXM: YES
    PFM: YES

  Video I/O:
    DC1394: NO
    FFMPEG: YES
      avcodec: YES (59.37.100)
      avformat: YES (59.27.100)
      avutil: YES (57.28.100)
      swscale: YES (6.7.100)
      avresample: NO
    GStreamer: NO
    v4l/v4l2: YES (linux/videodev2.h)

  Parallel framework: pthreads

  Trace: YES (with Intel ITT)

  Other third-party libraries:
    Intel IPP: 2021.8 [2021.8.0]
           at: /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/icv
    Intel IPP IW: sources (2021.8.0)
              at: /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/iw
    VA: NO
    Lapack: YES (/lib64/libopenblas.so)
    Eigen: NO
    Custom HAL: NO
    Protobuf: build (3.19.1)
    Flatbuffers: builtin/3rdparty (23.5.9)

  OpenCL: YES (no extra features)
    Include path: /io/opencv/3rdparty/include/opencl/1.2
    Link libraries: Dynamic load

  Python 3:
    Interpreter: /opt/python/cp37-cp37m/bin/python3.7 (ver 3.7.17)
    Libraries: libpython3.7m.a (ver 3.7.17)
    numpy: /home/ci/.local/lib/python3.7/site-packages/numpy/core/include (ver 1.17.0)
    install path: python/cv2/python-3

  Python (for build): /opt/python/cp37-cp37m/bin/python3.7

  Java:                          
    ant: NO
    Java: NO
    JNI: NO
    Java wrappers: NO
    Java tests: NO

  Install to: /io/_skbuild/linux-x86_64-3.7/cmake-install
-----------------------------------------------------------------

```

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [August 23, 2023, 6:10am UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/2 "2023-08-23T06:10:17Z")

</div>

> [@startingcoder](#):
>
> ` GStreamer: NO`

your cv2 was built without gstreamer support. try to use the ffmpeg backend instead to play video files (and no, you cannot use gstreamer pipe syntax, then)

to actually _use_ gstreamer from cv2, you need to build the opencv libs & cv2 from src, with gstreamer- **dev** libs installed

---

<div class="post-metadata">

**Author:** ![startingcoder](https://avatars.discourse-cdn.com/v4/letter/s/f08c70/32.png) [@startingcoder](https://forum.opencv.org/u/startingcoder)\
**Post date:** [August 23, 2023, 8:07am UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/3 "2023-08-23T08:07:44Z")

</div>

> [@berak](#):
>
> to actually _use_ gstreamer from cv2, you need to build the opencv libs & cv2 from src, with gstreamer- **dev** libs installed

Oh I see my mistake. Thank you for pointing it out.

I am looking into building it and it is pretty confusing. If possible, can you point me to a reference on how to build it.  
Sorry for asking more help as I am having hard time understanding all moving parts.

Thank you

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [August 23, 2023, 8:15am UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/4 "2023-08-23T08:15:17Z")

</div>

[https://docs.opencv.org/4.x/d7/d9f/tutorial\_linux\_install.html](https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html)

(this will also rebuild the cv2 python wrapper)

---

<div class="post-metadata">

**Author:** ![startingcoder](https://avatars.discourse-cdn.com/v4/letter/s/f08c70/32.png) [@startingcoder](https://forum.opencv.org/u/startingcoder)\
**Post date:** [August 23, 2023, 4:27pm UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/5 "2023-08-23T16:27:19Z")

</div>

Thank you @berak for your help.

I did install opencv and opencv\_contrib following [Build with opencv\_contrib](https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html#tutorial_linux_install_quick_build_contrib). But instead of `sudo make install`, used `sudo checkinstall` for installation.

I faced an issue - `ImportError: libopencv_intensity_transform.so.408: cannot open shared object file: No such file or directory` when importing cv2 which was solved by running

`sudo ldconfig`

It was a first time working with cmake and building from raw code. Thank you for your help.

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [August 23, 2023, 4:51pm UTC](https://forum.opencv.org/t/not-able-to-get-even-basic-gstreamer-pipeline-into-python-opencv/14328/6 "2023-08-23T16:51:58Z")

</div>

adding `-DBUILD_SHARED_LIBS=OFF` to the cmake flags will result in a fat, statically linked cv2, that no more depends on opencv\_xxx.so’s
