控制gstreamer源插件的输出速率

时间:2014-07-15 16:06:13

标签: gstreamer

所有

我有一个gstreamer源插件,它从avi文件中读取视频帧。它连接到gstreamer的核心三通和两个队列元素,将视频帧推送到两个视频处理元素。这两个视频处理元素的输出由我的mux插件进行多路复用。

使用tee和队列,目前我的gstreamer源插件不断将近6-10个视频帧推送到队列中 - 直到队列限制被填充我相信。我想要的是只从我的源插件中推出一个视频帧,并等待来自我的mux插件的信号用于下一帧。

有人可以指导如何在gstreamer框架中实现这一目标吗?

谢谢! ARM

P.S。我尝试将queue元素的max-size-buffers属性设置为1,但它不起作用。

1 个答案:

答案 0 :(得分:1)

看看现有的GStreamer复用器。基本上,速率控制是通过使用GstCollectPads在每个sinkpad上等待一个缓冲区然后阻塞来完成的,一旦每个sinkpad都有一个缓冲区,你将它们复用在一起(正确地将它们相对于彼此同步),然后转发数据。因此速率控制是通过在多路复用器内部进行阻塞来完成的,只有当多路复用器解除阻塞(即消耗缓冲区)时,才能在该接收器上推送新的缓冲区。

复用器前面的队列与此无关,但如果你想保持较低的内存使用率,你可以使用max-size-buffers = 1或类似的设置。