在将解复用的 h264 解码输出发送到 gstreamer 管道中的 autovideosink 之前,是否可以在两者之间给予一些延迟。如果是这样,任何人都可以发布示例管道来做到这一点。我使用的管道是 udpsrc port=5000 !mpegtsdemux 名称 = 解复用器!队列 !ffdec_h264!ffmpeg颜色空间!自动视频接收器解复用器。!队列 !ffdec_mp3!音频转换!阿尔萨辛克解复用器
在这种情况下,一旦在 upd 端口 5000 接收到流,它将在解复用-排队-解码后立即开始播放。在将其发送到实际播放的 autovideosink 之前是否有可能延迟 60 秒。是否有任何 Gstreamer 插件/元素可以做到这一点。
您可能想查看 的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
Run Code Online (Sandbox Code Playgroud)
通过设置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
Run Code Online (Sandbox Code Playgroud)
请注意,我已将max-size-*参数设置为 0,因为如果队列在达到阈值之前已满,您将无法从队列中获取数据。
请记住,对解码的视频流进行排队可能会导致大量内存使用。对于编码的 udpsrc,我建议延迟编码的 h264 流。您可能需要以字节为单位而不是纳秒设置阈值(我认为队列对编码数据的了解不足以猜测比特率)。
| 归档时间: |
|
| 查看次数: |
19377 次 |
| 最近记录: |