静静哈 2024-03-05 14:43 采纳率: 33.3%
浏览 60
已结题

gstreamer+opencv,想gstreamer采视频数据后用opencv处理后再将处理后的数据推流出去

img


以上是我目前的程序,问题是目前程序gst_state在ready的状态下才能正常推流,但是我的算法程序进不去;在gst_state是playing状态下,算法程序可以进去,但是用vlc获取流地址会报错queue basy,求指导,希望能实现算法处理后将视频数据正常推流出去。万分感谢!

  • 写回答

21条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-05 14:43
    关注
    获得0.40元问题酬金

    引自免费微信小程序:皆我百晓生

    为了实现GStreamer采集视频数据后用OpenCV处理,然后再将处理后的数据推流出去,你需要在现有的GStreamer管道中插入一个自定义的OpenCV处理元素。这个元素可以通过opencv-gstreamer插件或者创建一个自定义的GStreamer插件来实现。

    下面是一个概念性的解决方案:

    1. 首先,确保你已经安装了 opencv4 和相关的 opencv-gstreamer 插件(如果存在的话)。

    2. 修改你的GStreamer管道字符串,在原始视频源和编码器之间添加一个 OpenCV 处理元素。例如,可以使用 opencvfilter 元素(这可能需要你自己编写或找到已存在的类似插件),如下所示:

    std::string pipeline_str = g_strdup_printf(
        "v4l2src device=/dev/video%d ! video/x-raw,format=NV12,width=1920,height=1080 ! "
        "tee name=t ! clockoverlay halignment=left valignment=top text=\"网络监控:192.168.1.23\" font-desc=\"Sans Serif, 8\" ! "
        "queue ! videoconvert ! video/x-raw,format=BGR ! opencvfilter ! "
        "videoconvert ! videoscale ! video/x-raw,width=1280,height=1280 ! "
        "queue ! mpph264enc ! queue ! h264parse ! rtph264pay name=pay0 pt=96",
        n_videonum);
    
    // 假设opencvfilter是自定义的OpenCV处理插件
    
    1. 如果没有现成的 opencvfilter 元素,你可以创建一个自定义的GStreamer插件,该插件内部调用OpenCV函数进行图像处理。这个步骤相对复杂,涉及到C++编程以及对GStreamer插件开发的理解。

    2. 在自定义的OpenCV处理插件中,你需要重写必要的方法,以便在接收到每个buffer时对其进行处理,并将处理后的buffer发送至下一个pipeline元素。

    3. 确保你的pipeline状态切换正确,算法程序能够在播放状态下正常工作。对于报错“queue busy”,通常意味着某个队列元素未能及时处理数据,可能是由于处理速度跟不上帧率导致的。在这种情况下,调整OpenCV处理部分的性能或者增加适当的缓冲机制以适应实时性要求。

    总结来说,关键在于如何在GStreamer管道中无缝集成OpenCV处理部分,这可能需要通过自定义插件来实现。如果你选择编写自定义插件,请查阅GStreamer官方文档了解如何创建一个新的插件,并参考OpenCV API进行图像处理。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集