用opencv写gstreamer源码
Write gstreamer source with opencv
我的目标是,编写 GigEVision 到 Gstreamer 应用程序。
第一种方法是通过 GigEVision API 读取帧,然后通过 gstreamer 将其作为原始 RTP/UDP 流发送。
然后,任何 gstreamer 应用程序都可以接收此流。
这是网络摄像头的最小示例:https://github.com/tik0/mat2gstreamer
这样做的缺点是,当通过 UDP 将包发送到下一个应用程序时,需要进行大量的序列化和反序列化。
所以问题是:是否可以使用 opencv 轻松编写 gstreamer source pad,以克服缺点? (或者您还有其他建议吗?)
问候
我想我已经为我的给定设置找到了最佳解决方案(s.t。数据在同一台 PC 上的应用程序之间交换)。
只需使用共享内存插件即可轻松进行数据交换。
所以我的 OpenCV pileline 看起来像:
appsrc ! shmsink socket-path=/tmp/foo sync=true wait-for-connection=false
任何其他接收器(在本例中为 gstreamer-1.0)看起来像:
gst-launch-1.0 shmsrc socket-path=/tmp/foo ! video/x-raw, format=BGR ,width=<myWidth>,height=<myHeight>,framerate=<myFps> ! videoconvert ! autovideosink
即使有多个访问也能很好地工作。
我的目标是,编写 GigEVision 到 Gstreamer 应用程序。
第一种方法是通过 GigEVision API 读取帧,然后通过 gstreamer 将其作为原始 RTP/UDP 流发送。
然后,任何 gstreamer 应用程序都可以接收此流。
这是网络摄像头的最小示例:https://github.com/tik0/mat2gstreamer
这样做的缺点是,当通过 UDP 将包发送到下一个应用程序时,需要进行大量的序列化和反序列化。
所以问题是:是否可以使用 opencv 轻松编写 gstreamer source pad,以克服缺点? (或者您还有其他建议吗?)
问候
我想我已经为我的给定设置找到了最佳解决方案(s.t。数据在同一台 PC 上的应用程序之间交换)。 只需使用共享内存插件即可轻松进行数据交换。 所以我的 OpenCV pileline 看起来像:
appsrc ! shmsink socket-path=/tmp/foo sync=true wait-for-connection=false
任何其他接收器(在本例中为 gstreamer-1.0)看起来像:
gst-launch-1.0 shmsrc socket-path=/tmp/foo ! video/x-raw, format=BGR ,width=<myWidth>,height=<myHeight>,framerate=<myFps> ! videoconvert ! autovideosink
即使有多个访问也能很好地工作。