我正在开发一个涉及两个 rtspclientsink 输出的 GStreamer 管道。这是我正在使用的管道:
gst-launch-1.0 v4l2src device=/dev/video4 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! jpegdec ! videoconvert ! video/x-raw,width=1920,height=1080,framerate=10/1,format=I420,colorimetry=bt601 ! queue ! v4l2h264enc ! tee name=t ! queue ! rtspclientsink name=s location=rtsp://localhost:8554/realtime t. ! queue min-threshold-time=4000000000 max-size-time=100000000000 ! rtspclientsink name=b location=rtsp://localhost:8554/delayed
我的目标是让
rtspclientsink rtsp://localhost:8554/realtime
输出实时播放,并且 rtsp://localhost:8554/delayed
输出延迟 4 秒播放。但是,我遇到了两个输出都有延迟的问题,并且我无法使用 rtspclientsink rtsp://localhost:8554/realtime
实现实时播放。
我尝试使用sync=false作为参数,但这并没有解决问题。
有人可以深入了解为什么两个输出都会延迟,以及如何在一个输出上实现实时播放,同时保持另一个输出上的延迟吗?任何帮助将不胜感激。
提前谢谢您!
“rtspclientsink”有一个元素属性“latency”,默认为 2000ms。尝试将其设置为 0。
... ! rtspclientsink latency=0 location=...
您使用了我没有的“v4l2h264enc”元素,但如果它类似于“x264enc”元素,它可能具有调整编码性能的属性。
“x264enc”元素具有属性“tune”,默认为“none”。使用“零延迟”可以减少延迟。
... ! x264enc tune=zerolatency ! ...
您可以使用“v4l2h264enc”检查哪些属性
gst-inspect-1.0 v4l2h264enc