相关疑难解决方法(0)

793
推荐指数
17
解决办法
30万
查看次数

Gstreamer-如何用多个src构建应用程序?

在这种情况下,我有多个摄像头(rtspsrc)和一个singleton元素,它们对传入的视频流进行分析。我称它为单例元素,因为它具有请求源和接收器垫。应用程序中应该只存在其中之一,因为它可以在GPU上运行,并且可以通过批量处理获得更好的性能。将我正在构建的应用程序视为API,以添加相机,移除相机,打开和关闭每个相机的分析等。相机将对其进行分析,捕获结果并继续发送。麻烦的是,我需要共享一个Gstreamer元素(分析元素)。

因此,我有多个摄像头,将其馈入单个元素,然后馈入至appsink。这相当有效,但我希望能够:

  • 暂停特定的相机
  • 将每一个rtspsrc都完全隔离,这样一个错误就不会影响整个管道
  • 监听特定摄像机上的事件

如果我将所有摄像机都放在管道中,则无法弄清楚如何暂停特定摄像机。我无法暂停整个管道,因为这将停止所有摄像机。我想出的最好办法是删除并与特定摄像机的元素不同,然后在恢复时重新添加并重新链接。这有点。如果某个特定对象rtspsrc停止响应,则整个管道都将停止。如果rtspsrc不存在特定内容,则整个管道不会过渡到PLAYING状态

我应该如何设计我的应用程序?您认为我应该只有一条大型管道吗?还是应该有一个包含单例分析元素的管道,以及每个摄像机的管道,然后使用appsink和appsrc将它们连接起来?这种方法可能会使处理事情变得更容易,因为每个管道都是完全独立的?

让我知道您是否需要更多信息。

architecture video gstreamer

8
推荐指数
1
解决办法
287
查看次数