全,
我有一个gstreamer源插件,它可以从avi文件中读取视频帧。它连接到gstreamer的核心tee和两个队列元素,将视频帧推送到两个视频处理elements.These,两个视频处理元素的输出被我的多路复用插件复用。
使用tee和queue,目前我的gstreamer源码插件一直在将大约6-10个视频帧推送到两个队列中--直到队列限制被填满为止。我想要的是从我的源插件中只推送一个视频帧,并等待下一帧来自我的多路复用插件的信号。
有人可以指导如何在gstreamer框架中实现这一点吗?
谢谢!手臂
附注:我尝试使用队列元素的max-size-buffers属性设置为1,但不起作用。
发布于 2014-07-16 04:51:59
看看现有的GStreamer多路复用器。基本上,速率控制是通过使用GstCollectPads在每个接收板上等待一个缓冲区然后分块来完成的,一旦每个接收板有了缓冲区,您就可以将它们多路复用在一起(适当地将它们彼此同步),然后转发数据。因此,速率控制是通过多路复用器内部的阻塞来完成的,并且只有当多路复用器解除阻塞(即消耗缓冲区)时,才可以在该接收器上推送新的缓冲区。
复用器前面的队列与此无关,但如果您希望保持较低的内存使用率,则可以使用max-size-buffer=1或类似的设置。
https://stackoverflow.com/questions/24763035
复制相似问题