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

如何在webrtcbin中禁用音视频同步以降低延迟?

解决WebRTCBin中音视频同步导致高TS偏移延迟的问题

核心方案

WebRTCBin内部默认依靠rtp-jitter-buffer的时间戳偏移实现音视频同步,要避免这类延迟,需从禁用抖动缓冲区的偏移计算和关闭WebRTCBin自身同步逻辑两个维度调整:

1. 强制关闭RTP抖动缓冲区的时间戳偏移

直接修改rtp-jitter-buffer的属性,禁止其自动计算时间戳偏移:

# 管道中配置rtp-jitter-buffer时添加参数
rtp-jitter-buffer sync=false ts-offset=0

如果是通过代码动态创建元素,可设置对应属性:

# Python示例代码
jitter_buf = Gst.ElementFactory.make("rtp-jitter-buffer")
jitter_buf.set_property("sync", False)
jitter_buf.set_property("ts-offset", 0)

2. 关闭WebRTCBin的内部音视频同步

WebRTCBin自带do-sync属性(默认值为true),将其设为false即可禁用内部同步逻辑:

# 管道中配置webrtcbin时添加参数
webrtcbin do-sync=false

该配置会让WebRTCBin不再对齐音视频时间戳,直接按接收顺序推送媒体数据,彻底避免为同步产生的延迟。

3. 验证效果

修改配置后重新运行管道,查看抖动缓冲区的offset输出,若所有值保持为0,则说明同步逻辑已成功禁用:

rtp-jitter-buffer [rtpjitterbuffer1] offset: 0 
rtp-jitter-buffer [rtpjitterbuffer0] offset: 0 
rtp-jitter-buffer [rtpjitterbuffer3] offset: 0 
rtp-jitter-buffer [rtpjitterbuffer2] offset: 0 

注意事项

  • 禁用同步后可能出现音视频不同步的情况,仅适合对延迟敏感、可接受轻微不同步的场景(如实时监控、低延迟互动直播)。
  • 确保使用GStreamer 1.18及以上版本,旧版本可能不支持do-sync或sync属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:32:39