队列 2 中的 gstreamer buffers/bytes,appsrc

gstreamer buffers/bytes in queue2, appsrc

已阅读 queue2、appsrc 的 gst-inspect-1.0 文档, 我很迷惑。什么是缓冲区和字节(和时间)?哪个优先于另一个。 可以在管道上设置 max-size-bytes、max-size-time 和 max-size-buffers。 但是我没有在 queue2 上获得正确数量的缓冲。 前任: 最大大小字节=100 最大大小缓冲区=10 这是否意味着总缓冲区大小 = 1000,并且在每次突发数据到达时最多允许 10 个字节?

理想情况下,我希望在 appsrc 或 appsrc 旁边的 queue2 处有已知数量的缓冲。 来源是直播的 mpeg2-TS。有人可以建议正确的设置吗?

您可以同时使用所有三个 max-size-bytes、max-size-time 和 max-size-buffers。它们都限制了可以在队列内部缓冲的数据量。第一个被击中的会阻塞缓冲。例如,如果您设置 max-size-buffer=100、max-size-time=10000000000 和 max-size-bytes=20,则您是:

  1. 队列中最多允许 100 个缓冲区
  2. 队列中最多允许 10 秒的缓冲区
  3. 队列中最多允许 20 字节的缓冲区数据

如您所见,即使您配置了 100 个缓冲区或 10 秒,20 个字节将首先命中(可能在第一个缓冲区),因此您一次只能排队 1 个缓冲区(假设缓冲区数据确实大于 20 个字节)。

顺便说一句,如果您没有使用 queue2 的特定原因,您应该使用 queue。

最后,我不明白 appsrc 如何适合你的问题。