问题:Opencv+Gstreamer 无法对rtsp相机拉流问题,但单独使用Gstreamer可以的
bash
cv::VideoCapture cap(pipeline, cv::CAP_GSTREAMER);
解决:此处略过中间做的测试,直接说原因,程序里使用了 OpenCV 的 GStreamer 接口,但未启用 GStreamer backend。
如果 OpenCV 没编译 GStreamer 支持,
cap.isOpened() 直接返回 false ⇒ "Camera can NOT open!"
验证:
bash
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep -A3 GStreamer
若显示 GStreamer: NO,
则需要重新编译 时用 OpenCV 启用 GStreamer 支持。
或替换调用方式为直接 GStreamer API。
于是重新编译OpenCV,编译前要加上下面的库,不然还是一样的错误:
bash
sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
libopenexr-dev libtbb2 libtbb-dev libdc1394-22-dev \
gstreamer1.0-tools gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev