Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GStreamer的多个应用程序_Gstreamer - Fatal编程技术网

使用GStreamer的多个应用程序

使用GStreamer的多个应用程序,gstreamer,Gstreamer,我想写(但首先我想了解如何做)基于GStreamer框架的应用程序(不止一个),这些应用程序将同时共享相同的硬件资源 例如:有一个硬件具有硬件加速功能,用于视频解码。我想同时启动两个应用程序,它们能够使用硬件加速对不同的视频流进行解码。当然,我假设HW能够处理这样的请求,有适当的驱动程序(但不是GStreamer元素)来处理,但是如何编写GStreamer元素来支持独立进程之间的资源共享呢 如果您有可以同时访问的h/w,我将不胜感激。因此,同时访问它的两个gstreamer元素应该可以工作!这里

我想写(但首先我想了解如何做)基于GStreamer框架的应用程序(不止一个),这些应用程序将同时共享相同的硬件资源

例如:有一个硬件具有硬件加速功能,用于视频解码。我想同时启动两个应用程序,它们能够使用硬件加速对不同的视频流进行解码。当然,我假设HW能够处理这样的请求,有适当的驱动程序(但不是GStreamer元素)来处理,但是如何编写GStreamer元素来支持独立进程之间的资源共享呢


如果您有可以同时访问的h/w,我将不胜感激。因此,同时访问它的两个gstreamer元素应该可以工作!这里没有具体的Gstreamer

假设你想写一个解码元素,它就像任何解码元素一样,你可以正确地访问你的硬件。您的驱动程序应该负责并发访问。
起点是Gstreamer插件编写指南

因此,您需要一个单独的进程来控制硬件解码器,并对来自多个源的流进行解码


我建议构建一个守护进程,可能它本身也基于GStreamer。gdppay和gdpdepay提供了非常简单的方法,通过套接字将数据传递给守护进程并返回。守护进程将等待指定端口(或unix套接字)上的连接,并为每个连接打开一个虚拟解码器。独立应用程序中的视频解码器元素将在内部连接到守护进程并返回解码的视频。

也许可以从gstreamer多路复用器(mux)开始?Thanx用于回复,但我的意思是有一个物理视频解码器,它能够解码几个流(通过多路复用解码)。它通过用户空间中可访问的API库可见。我有一个库,允许我打开2个“虚拟”视频解码器,但只有当我在一个过程中这样做时,我才知道我使用了视频0,例如视频1是免费的。我需要一种虚拟视频解码器实例的“管理器”,它可以为请求进程提供实例……理想情况下,您还应该有一个可用的查询。如果没有,您可以将vid0和vid1作为参数传递给程序实例,以便应用程序可以控制使用哪一个。