您可能需要查看queue
的参数(运行gst-inspect queue
):
max-size-buffers : Max. number of buffers in the queue (0=disable)
flags: lesbar, schreibbar
Unsigned Integer. Range: 0 - 4294967295 Default: 200
max-size-bytes : Max. amount of data in the queue (bytes, 0=disable)
flags: lesbar, schreibbar
Unsigned Integer. Range: 0 - 4294967295 Default: 10485760
max-size-time : Max. amount of data in the queue (in ns, 0=disable)
flags: lesbar, schreibbar
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 1000000000
min-threshold-buffers: Min. number of buffers in the queue to allow reading (0=disable)
flags: lesbar, schreibbar
Unsigned Integer. Range: 0 - 4294967295 Default: 0
min-threshold-bytes : Min. amount of data in the queue to allow reading (bytes, 0=disable)
flags: lesbar, schreibbar
Unsigned Integer. Range: 0 - 4294967295 Default: 0
min-threshold-time : Min. amount of data in the queue to allow reading (in ns, 0=disable)
flags: lesbar, schreibbar
Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
通过设置min-threshold-time
,您可以将输出延迟 n 纳秒。
我刚刚用我的网络摄像头试了一下,它工作正常(延迟 60 秒):
gst-launch v4l2src ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 min-threshold-time=60000000000 ! autovideosink
请注意,我已将max-size-*
参数设置为 0,因为如果队列在达到阈值之前填满,您将无法从队列中获取数据。
请记住,对解码的视频流进行排队可能会导致大量内存使用。使用您编码的 udpsrc,我建议延迟编码的 h264 流。您可能需要以字节而不是纳秒为单位设置阈值(我认为队列对编码数据的了解不足,无法猜测比特率)。