首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV中的GStreamer不通过UDP发送视频数据。

OpenCV中的GStreamer不通过UDP发送视频数据。
EN

Stack Overflow用户
提问于 2017-12-09 19:26:16
回答 1查看 936关注 0票数 1

我正尝试在Mac (10.12.6)上使用GStreamer,通过UDP传输从OpenCV帧编码的视频。由于某些原因,这不起作用,并且我没有从GStreamer或OpenCV获得任何错误输出。这是我在OpenCV中打开编写器的方式:

代码语言:javascript
复制
    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应用编程接口从(c++)源代码编译或通过启动时,相同的管道也可以工作

代码语言:javascript
复制
/gst-launch-1.0 videotestsrc ! x264enc byte-stream=true threads=4 ! mpegtsmux ! udpsink host=localhost port=9999

我不认为OpenCV或GStreamer本身有错,因为当我通过以下方式打开writer时,我能够将视频流到OpenCV中的自动视频链接

代码语言:javascript
复制
    cv::VideoWriter writer(
    "appsrc ! autovideosink",
    cv::CAP_GSTREAMER,
    0,
    (double) 5,
    cv::Size(320, 240),
    true);

作为参考-我通过Brew安装了GStreamer,并使用以下CMake标志自己构建了OpenCV:

代码语言:javascript
复制
-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比较陌生,所以我可能遗漏了一些明显的东西。你知道我在这里可能做错了什么吗?或者有什么方法可以帮助追踪这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-12-10 03:15:58

终于明白了。通过设置GStreamer打开GST_DEBUG=2调试输出时,OpenCV找不到x264enc。我没有注意到这一点,因为它是在通过GStreamer C++ API编译管道时发现的。

原因是,虽然OSX上的GStreamer安装包安装了x264enc元素,但mac上的brew没有。我自己编译了OpenCV -它使用的是GStreamer的brew安装,而不是框架。

已通过brew重新安装用于GStreamer的插件元素(brew安装gst-plugins-- x264enc --with-x264),解决了此问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47728061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档