OpenCV中的GStreamer不通过UDP发送视频数据
我试图在Mac(10.12.6)上使用GStreamer来流式传输通过UDP从OpenCV帧编码的视频。 出于某种原因,这不起作用,我没有从GStreamer或OpenCV获得任何错误输出。 这就是我如何在OpenCV中打开作者:
cv::VideoWriter writer(
"appsrc ! videoconvert ! x264enc byte-stream=true threads=4 ! mpegtsmux ! udpsink host=localhost port=9999",
cv::CAP_GSTREAMER,
0,
(double) 5,
cv::Size(320, 240),
true);
这位作家打开并且我可以将帧提供给它,但是在侦听端口时我没有得到任何输出。 使用GStreamer API从(c ++)源编译或通过启动时,相同的管道工作
/gst-launch-1.0 videotestsrc ! x264enc byte-stream=true threads=4 ! mpegtsmux ! udpsink host=localhost port=9999
我不认为OpenCV或GStreamer本身存在问题,因为我可以通过OpenCV打开作者时将视频流式传输到OpenCV中的autovideosink
cv::VideoWriter writer(
"appsrc ! autovideosink",
cv::CAP_GSTREAMER,
0,
(double) 5,
cv::Size(320, 240),
true);
作为参考 - 我通过Brew安装了GStreamer,并使用以下CMake Flags自己构建OpenCV:
-DOPENCV_ENABLE_NONFREE=ON
-DWITH_OPENGL=ON
-DWITH_OPENVX=ON
-DWITH_OPENCL=ON
-DBUILD_PNG=ON
-DBUILD_TIFF=ON
-DOPENCV_EXTRA_MODULES_PATH=~/src/opencv_contrib/modules
-DWITH_1394=OFF
-DWITH_CUDA=OFF
-DWITH_GSTREAMER=ON.
我对GStreamer比较陌生,所以我可能会错过一些明显的东西。 任何想法我在这里可能做错了什么或有什么可以帮助追查这个问题?
终于明白了。 通过设置GST_DEBUG = 2打开GStreamer调试输出,发现OpenCV未找到x264enc。 我没有注意到它是在通过GStreamer C ++ API编译管道时发现的。
原因是,尽管OSX上的GStreamer安装软件包安装了x264enc元素,但在mac上的brew没有。 自己编译OpenCV后 - 它使用GStreamer的brew安装而不是框架。
通过brew重新安装GStreamer的x264enc元素解决了这个问题(brew安装gst-plugins-丑陋--with-x264)。
链接地址: http://www.djcxy.com/p/25435.html上一篇: GStreamer in OpenCV does not send video data over UDP
下一篇: Opening a GStreamer pipeline from OpenCV with VideoWriter