1

我正在尝试从 IP 摄像机获取帧。我可以使用 FFMPEG 或 GS​​treamer 从我的 Ubuntu 14.04 PComxplayergst-launch-1.0Raspberry Pi 获取帧。但是当我想从 Raspberry Pi 使用 c++ OpenCV 访问相机时,它给了我一个关于 GStreamer 管道的错误;

(ocvip:2870): GStreamer-WARNING **: Failed to load plugin '/usr/local/lib/gstreamer-1.0/libgstrtsp.so': /usr/local/lib/gstreamer-1.0/libgstrtsp.so: undefined symbol: gst_rtsp_connection_set_tls_validation_flags
GStreamer Plugin: Embedded video playback halted; module u-uridecodebin, reported: URI was not accepted by any element
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline) in icvStartPipeline, file /opt/opencv-2.4.10/modules/highgui/src/cap_gstreamer.cpp, line 383
what(): /opt/opencv-2.4.10/modules/highgui/src/cap_gstreamer.cpp:383: error: (-2) GStreamer unable to start pipeline in function icvStartPipeline

Aborted

代码:

const string videoAddress = "rtsp://user:password@xxx.xxx.x.xxx:xxx/cam/realmonitor?channel=1&subtype=1";
int main() {
  cv::VideoCapture video;
  cv::Mat im;
  cv::namedWindow("IP", 1);
  video.open(videoAddress);
  if (video.isOpened()) {
    video >> im;
    if (!im.data) break;
    cv::imshow("IP", im);
    if (cv::waitKey(20) >= 0) break;
  }
}

我可以使用相同的 rtsp 地址访问相机,omxplayer 显示正常 gst-launch 显示帧旋转了 180 度。我已经使用这个页面构建了 GStreamer-1.0,因为 cmake 没有找到预构建的库。我发现了这个问题。这个错误有两个修复,但我不确定这些是否是正确的解决方案并解决我的问题,因为我没有使用相机访问video.open(0)所以我不能这样做video.open(IPAddress + CV_CAP_PVAPI)

谢谢。

4

0 回答 0