You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gstreamer RTSP Server使用tee分支后autovideosink卡住如何排查?

问题原因

核心是GStreamer tee元件的分支未做异步队列隔离,单分支阻塞直接拉垮了整个流水线:
GStreamer tee默认会将输入的buffer同步推送到所有输出分支,只要任意一个分支消费速度不匹配、出现阻塞,就会卡住tee上游的所有数据供给,你碰到的情况就是两个分支运行节奏冲突:

  • 走x264编码、rtp打包的RTSP分支,在客户端未完成接入、或者接入后消费速度不足时会进入阻塞状态,此时tee会停止推送数据,本地的autovideosink自然就只能显示第一帧后卡住
  • 反过来如果autovideosink因为窗口刷新、显示同步逻辑出现阻塞,也会卡住RTSP流的推送,导致客户端无法拿到SDP信息,最终出现你日志里的「服务端响应超时」报错
修复方案
  1. 给tee的每个输出分支都加独立的queue元件做异步隔离,让两个分支的数据流互不影响,修改后的服务端启动串如下:
videotestsrc pattern=ball ! videoconvert ! video/x-raw, width=(int)800, height=(int)800, format=(string)I420 ! tee name=t \
t. ! queue ! x264enc ! rtph264pay name=pay0 pt=96 \
t. ! queue ! autovideosink
  1. 可选优化:给x264enc添加tune=zerolatency参数降低编码延迟,给autovideosink添加sync=false参数关闭显示同步,避免同步逻辑导致的不必要阻塞。

内容的提问来源于stack exchange,提问作者NicholasB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:24:02