Hi,
I’m having issues with trying to get a GStreamer pipeline working on my Orin Nano from an IMX219 Camera connected to CSI port 0. I am trying to use CV2:VideoCapture, with CAP_GSTREAMER set, in the Python bindings to set up the GStreamer pipeline, but unfortunately, it hangs silently.
The pipeline I have is:
f"nvarguscamerasrc sensor-id={1} ! "
f"'video/x-raw(memory:NVMM), width={width}, height={height}, "
f"format=(string)NV12, framerate=(fraction){framerate}/1 !"
f"nvvidconv ! "
f"video/x-raw, format=BGRx ! "
f"videoconvert ! "
f"video/x-raw, format=BGR ! "
f"queue ! "
f"appsink drop=1'"
where width & height are 244 and framerate is 30.
Using a similar pipeline from the cli:
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=(int)422, height=(int)422' ! nvvidconv ! video/x-raw,format=BGRx ! videoconvert ! video/x-raw,format=BGR ! queue ! appsink drop=1
gives this output:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3280 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 3280 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 4
Output Stream W = 1280 H = 720
seconds to Run = 0
Frame Rate = 59.999999
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadExecute:694 NvBufSurfaceFromFd Failed.
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:247 (propagating)
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: CANCELLED
Additional debug info:
Argus Error Status
Execution ended after 0:00:03.489415662
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
Freeing pipeline ...
However, if I try and run the pipeline from python GStreamer it hangs silently. After force closing the process, GStreamer will fail with this warning until reboot on the cli (and still just hangs when calling CV2:VideoCapture)
warning: erroneous pipeline: no element "nvarguscamerasrc"
Restarting the nvargus-deamon does not fix this error. Similarly, trying to use the x264 encoder (or any other that is installed) will also fail with the corresponding similar error. I am also aware that the Orin Nano does not have a hardware encoder.
If I try to use either of the pipelines referenced in this answer I am able to create an mkv file successfully.
Setup:
Nvidia Orin Nano running headless on the dev-board
L4T Version
cat /etc/nv_tegra_release
# R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug 1 19:57:35 UTC 2023
OpenCV version
apt list | grep "opencv"
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
cl-opencv-apps/focal 1.12.0-3build3 all
gstreamer1.0-opencv/focal-updates 1.16.3-0ubuntu1 arm64
libgstreamer-opencv1.0-0/focal-updates,now 1.16.3-0ubuntu1 arm64 [installed,automatic]
libopencv-apps-dev/focal 1.12.0-3build3 arm64
libopencv-apps1d/focal 1.12.0-3build3 arm64
libopencv-calib3d-dev/focal 4.2.0+dfsg-5 arm64
libopencv-calib3d4.2/focal 4.2.0+dfsg-5 arm64
libopencv-contrib-dev/focal 4.2.0+dfsg-5 arm64
libopencv-contrib4.2/focal 4.2.0+dfsg-5 arm64
libopencv-core-dev/focal 4.2.0+dfsg-5 arm64
libopencv-core4.2/focal,now 4.2.0+dfsg-5 arm64 [installed,automatic]
libopencv-dev/stable,now 4.5.4-8-g3e4c170df4 arm64 [installed,automatic]
libopencv-dnn-dev/focal 4.2.0+dfsg-5 arm64
libopencv-dnn4.2/focal 4.2.0+dfsg-5 arm64
libopencv-features2d-dev/focal 4.2.0+dfsg-5 arm64
libopencv-features2d4.2/focal 4.2.0+dfsg-5 arm64
libopencv-flann-dev/focal 4.2.0+dfsg-5 arm64
libopencv-flann4.2/focal 4.2.0+dfsg-5 arm64
libopencv-highgui-dev/focal 4.2.0+dfsg-5 arm64
libopencv-highgui4.2/focal 4.2.0+dfsg-5 arm64
libopencv-imgcodecs-dev/focal 4.2.0+dfsg-5 arm64
libopencv-imgcodecs4.2/focal 4.2.0+dfsg-5 arm64
libopencv-imgproc-dev/focal 4.2.0+dfsg-5 arm64
libopencv-imgproc4.2/focal 4.2.0+dfsg-5 arm64
libopencv-ml-dev/focal 4.2.0+dfsg-5 arm64
libopencv-ml4.2/focal 4.2.0+dfsg-5 arm64
libopencv-objdetect-dev/focal 4.2.0+dfsg-5 arm64
libopencv-objdetect4.2/focal 4.2.0+dfsg-5 arm64
libopencv-photo-dev/focal 4.2.0+dfsg-5 arm64
libopencv-photo4.2/focal 4.2.0+dfsg-5 arm64
libopencv-python/stable 4.5.4-8-g3e4c170df4 arm64
libopencv-samples/stable 4.5.4-8-g3e4c170df4 arm64
libopencv-shape-dev/focal 4.2.0+dfsg-5 arm64
libopencv-shape4.2/focal 4.2.0+dfsg-5 arm64
libopencv-stitching-dev/focal 4.2.0+dfsg-5 arm64
libopencv-stitching4.2/focal 4.2.0+dfsg-5 arm64
libopencv-superres-dev/focal 4.2.0+dfsg-5 arm64
libopencv-superres4.2/focal 4.2.0+dfsg-5 arm64
libopencv-ts-dev/focal 4.2.0+dfsg-5 arm64
libopencv-video-dev/focal 4.2.0+dfsg-5 arm64
libopencv-video4.2/focal 4.2.0+dfsg-5 arm64
libopencv-videoio-dev/focal 4.2.0+dfsg-5 arm64
libopencv-videoio4.2/focal 4.2.0+dfsg-5 arm64
libopencv-videostab-dev/focal 4.2.0+dfsg-5 arm64
libopencv-videostab4.2/focal 4.2.0+dfsg-5 arm64
libopencv-viz-dev/focal 4.2.0+dfsg-5 arm64
libopencv-viz4.2/focal 4.2.0+dfsg-5 arm64
libopencv4.2-java/focal 4.2.0+dfsg-5 all
libopencv4.2-jni/focal 4.2.0+dfsg-5 arm64
libopencv/stable,now 4.5.4-8-g3e4c170df4 arm64 [installed,automatic]
node-opencv/focal 6.0.0+git20190322.db093cb2-7 arm64
nvidia-opencv-dev/stable 5.1.2-b104 arm64
nvidia-opencv/stable 5.1.2-b104 arm64
opencv-data/focal 4.2.0+dfsg-5 all
opencv-doc/focal 4.2.0+dfsg-5 all
opencv-licenses/stable 4.5.4-8-g3e4c170df4 arm64
python3-opencv-apps/focal 1.12.0-3build3 all
python3-opencv/focal 4.2.0+dfsg-5 arm64
ros-opencv-apps/focal 1.12.0-3build3 arm64
GStreamer Version
gst-launch-1.0 --gst-version
GStreamer Core Library version 1.16.3
OpenCV Python build information
print(cv2.getBuildInformation())
General configuration for OpenCV 4.6.0 =====================================
Version control: unknown
Extra modules:
Location (extra): /croot/opencv-suite_1691620390108/work/opencv_contrib-4.6.0/modules
Version control (extra): unknown
Platform:
Timestamp: 2023-08-09T22:58:34Z
Host: Linux 5.10.184-175.749.amzn2.aarch64 aarch64
CMake: 3.26.4
CMake generator: Ninja
CMake build tool: /croot/opencv-suite_1691620390108/_build_env/bin/ninja
Configuration: Release
CPU/HW features:
Baseline: NEON FP16
C/C++:
Built as dynamic libs?: YES
C++ standard: 11
C++ Compiler: /croot/opencv-suite_1691620390108/_build_env/bin/aarch64-conda-linux-gnu-c++ (ver 11.2.0)
C++ flags (Release): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/include -fdebug-prefix-map=/croot/opencv-suite_1691620390108/work=/usr/local/src/conda/opencv-suite-4.6.0 -fdebug-prefix-map=/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac=/usr/local/src/conda-prefix -D__STDC_CONSTANT_MACROS -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 -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fopenmp -O3 -DNDEBUG -DNDEBUG
C++ flags (Debug): -fvisibility-inlines-hidden -std=c++11 -fmessage-length=0 -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/include -fdebug-prefix-map=/croot/opencv-suite_1691620390108/work=/usr/local/src/conda/opencv-suite-4.6.0 -fdebug-prefix-map=/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac=/usr/local/src/conda-prefix -D__STDC_CONSTANT_MACROS -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 -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fopenmp -g -DDEBUG -D_DEBUG
C Compiler: /croot/opencv-suite_1691620390108/_build_env/bin/aarch64-conda-linux-gnu-cc
C flags (Release): -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/include -fdebug-prefix-map=/croot/opencv-suite_1691620390108/work=/usr/local/src/conda/opencv-suite-4.6.0 -fdebug-prefix-map=/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac=/usr/local/src/conda-prefix -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 -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fopenmp -O3 -DNDEBUG -DNDEBUG
C flags (Debug): -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe -isystem /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/include -fdebug-prefix-map=/croot/opencv-suite_1691620390108/work=/usr/local/src/conda/opencv-suite-4.6.0 -fdebug-prefix-map=/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac=/usr/local/src/conda-prefix -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 -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fopenmp -g -DDEBUG -D_DEBUG
Linker flags (Release): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -Wl,-rpath-link,/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -L/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined
Linker flags (Debug): -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-rpath,/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -Wl,-rpath-link,/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -L/croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined
ccache: NO
Precompiled headers: NO
Extra dependencies: dl m pthread rt
3rdparty dependencies:
OpenCV modules:
To be built: alphamat aruco bgsegm bioinspired calib3d ccalib core cvv datasets dpm face features2d flann freetype fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
Disabled: world
Disabled by dependency: barcode dnn_objdetect dnn_superres mcc text wechat_qrcode
Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev dnn java julia matlab ovis python2 sfm ts viz
Applications: -
Documentation: NO
Non-free algorithms: NO
GUI: QT5
QT: YES (ver 5.15.2 )
QT OpenGL support: NO
Media I/O:
ZLib: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/libz.so (ver 1.2.13)
JPEG: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/libjpeg.so (ver 90)
PNG: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/libpng.so (ver 1.6.37)
TIFF: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/libtiff.so (ver 42 / 4.2.0)
JPEG 2000: OpenJPEG (ver 2.3.0)
OpenEXR: build (ver 2.3.0)
HDR: YES
SUNRASTER: YES
PXM: YES
PFM: YES
Video I/O:
GStreamer: YES (1.14.1)
v4l/v4l2: YES (linux/videodev2.h)
Parallel framework: OpenMP
Trace: YES (built-in)
Other third-party libraries:
Eigen: YES (ver 3.3.7)
Custom HAL: YES (carotene (ver 0.0.1))
Python 3:
Interpreter: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/bin/python3 (ver 3.8.17)
Libraries: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/libpython3.8.so (ver 3.8.17)
numpy: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.8/site-packages/numpy/core/include (ver 1.21.5)
install path: lib/python3.8/site-packages/cv2/python-3.8
Python (for build): /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/bin/python
Java:
ant: NO
JNI: NO
Java wrappers: NO
Java tests: NO
Install to: /croot/opencv-suite_1691620390108/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
Thank you for your help!