1

我正在尝试构建一个 GStreamer 管道,它将来自多个摄像头的图像交织成一个数据流,该数据流可以通过神经网络传递,然后分成单独的分支进行下沉。我已成功使用appsrc插件和 Basler Pylon 5 - USB 3.0 API 创建交错馈送。但是,在我完成编写神经网络 GStreamer 元素的工作之前,我想让拆分工作。

目前,我正在考虑用“ID”标记图像,表明它来自哪个相机。然后我想我可以使用这个标签来拆分数据流。但是,我还没有找到任何与此问题完全相关的主题。我已经看到您可以使用tee插件来分支管道,但我还没有看到它用于基于标签进行拆分。可以tee用来做这个吗?

我见过人们使用tee这样的方式根据来源拆分提要:

gst-launch-1.0 -vvv \
    tee name=splitter \
    $VSOURCE \
    ! $VIDEO_DECODE \
    ! $VIDEO_SINK splitter. \
    $VSOURCE1 \
    ! $VIDEO_DECODE \
    ! $VIDEO_SINK splitter.

但是,这不允许我通过神经网络元素拥有单一路径。

如果有帮助,这是我设想的管道图:

cam1 ---\                                  /---> udpsink/appsink                              
         \                                / 
          appsrc-->neural_network-->tee---
         /                                \
cam2 ---/                                  \---> udpsink/appsink
4

2 回答 2

2

tee 元素只是将相同的数据转发到两个分支。您应该编写另一个元素,该元素接受输入并仅输出您感兴趣的流的数据。

您还应该在每个分支后面放置一个队列元素,以便为每个分支提供单独的线程。我调用了元素来拆分具有属性的流 camfilter id

cam1 ---\                                  /---> queue --> camfilter id=1 --> udpsink/appsink                              
         \                                / 
          appsrc-->neural_network-->tee---
         /                                \
cam2 ---/                                  \---> queue --> camfilter id=2 --> udpsink/appsink
于 2018-03-15T16:13:44.633 回答
1

当被问到这个问题时,这是不可用的。但是,从 2018 年夏天开始,如果您想减少实现自己的“合并”代码与 appsrc 和相机帧处理的工作量,您可以使用 nnstreamer。这也使您可以更轻松地替换神经网络。

随着最近添加的支持 gstreamer 插件的神经网络,“nnstreamer”(https://github.com/nnsuite/nnstreamer),您可以在中间不使用 apprc 的情况下执行此操作,从而减少实施工作量:

cam1 (gst src) ---> videoconvert,scale,... --> tensor_converter --\
                                                                   \
                                                                    tensor_merge (or tensor_mux depending on the input dimensions) --> tensor_filter (framework=tf_lite, model=abc.tflite) --> tee --> (same from here)
                                                                   /
cam2 (gst src) ---> videoconvert,scale,... --> tensor_converter --/

请注意,它还支持 pytorch、caffe2、tf 等。

于 2019-08-19T07:19:59.977 回答