我正在尝试从 IP 摄像机获取帧。我可以使用 FFMPEG 或 GStreamer 从我的 Ubuntu 14.04 PComxplayer
或gst-launch-1.0
Raspberry 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)
?
谢谢。