GStreamer插件在Haskell中的使用
我正在尝试使用GStreamer从网络摄像头获取图像,并将其加载到OpenGL纹理 我在用哈斯克尔图书馆。我设法在一个窗口中简单地显示网络摄像头的输出,其中GStreamer插件在Haskell中的使用,haskell,opengl,plugins,gstreamer,Haskell,Opengl,Plugins,Gstreamer,我正在尝试使用GStreamer从网络摄像头获取图像,并将其加载到OpenGL纹理 我在用哈斯克尔图书馆。我设法在一个窗口中简单地显示网络摄像头的输出,其中v4l2src作为源,xImageSink作为接收器。现在我想把它加载到OpenGL纹理中。我看到您可以在C中使用GStreamer插件来完成这项工作,该插件允许您通过调用gst\u app\u sink\u pull\u sample()从管道中提取样本 我想我成功地加载了app插件和appsink功能,但我不知道Haskell中的gst\
v4l2src
作为源,xImageSink
作为接收器。现在我想把它加载到OpenGL纹理中。我看到您可以在C中使用GStreamer插件来完成这项工作,该插件允许您通过调用gst\u app\u sink\u pull\u sample()
从管道中提取样本
我想我成功地加载了app
插件和appsink
功能,但我不知道Haskell中的gst\u app\u sink\u pull\u sample()
这就是我加载app
插件和appsink
功能的方式:
import qualified Media.Streaming.GStreamer as GS
main = do
GS.init
appPlugin <- GS.pluginLoadByName "app"
appsinkFeature <- GS.registryLookupFeature GS.defaultRegistry "appsink"
但是,在对管道进行采样之后,我该如何处理它呢?@ellegnord和潜在的回答者:请注意,C答案在这里可能会有所帮助。gstreamer-Haskell库似乎是一个薄薄的包装器。如果GStreamer插件Elle不需要Haskell绑定,并且如果有一种方法可以只使用核心库来回答这个问题,那么从C直接翻译成Haskell应该是可能的。不幸的是,我无法提供更多帮助,因为我对这两种语言中的GStreamer库知之甚少。它似乎不是Haskell绑定的一部分,而且动态GLib动作信号的使用似乎不可能(如果我错了,请纠正我)。必须首先将其添加到绑定中。但独立于此,Haskell GStreamer绑定适用于GStreamer的旧0.10版本系列,自3年后不再维护。特别是对于任何与OpenGL相关的东西,都应该使用最新的1.6版本。但是这对你来说可能不是很有用,因为你似乎知道如何从C:)我认为可以在GStreamer Haskell库中使用信号,但我不知道如何做到这一点。信号的概念对我来说是很新的,我真的不知道从哪里开始。有什么建议吗?无论如何,感谢您的见解。据我所知,只有API可以连接到信号,您在这里需要的是能够发出信号。@ElleGnrd和潜在的回答者:请注意,C答案在这里可能会有所帮助。gstreamer-Haskell库似乎是一个薄薄的包装器。如果GStreamer插件Elle不需要Haskell绑定,并且如果有一种方法可以只使用核心库来回答这个问题,那么从C直接翻译成Haskell应该是可能的。不幸的是,我无法提供更多帮助,因为我对这两种语言中的GStreamer库知之甚少。它似乎不是Haskell绑定的一部分,而且动态GLib动作信号的使用似乎不可能(如果我错了,请纠正我)。必须首先将其添加到绑定中。但独立于此,Haskell GStreamer绑定适用于GStreamer的旧0.10版本系列,自3年后不再维护。特别是对于任何与OpenGL相关的东西,都应该使用最新的1.6版本。但是这对你来说可能不是很有用,因为你似乎知道如何从C:)我认为可以在GStreamer Haskell库中使用信号,但我不知道如何做到这一点。信号的概念对我来说是很新的,我真的不知道从哪里开始。有什么建议吗?无论如何,谢谢你的洞察力。在我看来,只有API可以连接到信号,你需要的是能够发出信号。
appSink <- GS.elementFactoryMake "appsink" (Just "app-sink")