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

ffmpeg读取GStreamer生成流时时间戳不匹配导致播放异常问题

根因定位

你遇到的问题核心确实是GStreamer与OME的时间戳单位不匹配导致的:
GStreamer默认使用纳秒作为时间戳单位,而OME的媒体路由模块默认以1/1000的时间基(即毫秒单位)解析输入流的时间戳。从提供的日志可以看到,相邻两帧的pts差值约为4294967ms,换算后约为4294秒,远大于正常直播流的帧间隔,OME判定时间戳异常后无法正常组织帧序列发送给播放器,就会出现播放器仅能加载前1秒内容、后续卡顿无法播放的问题。
rtsp-simple-server可以正常播放的原因是它会自动适配输入流携带的时间基信息,不会强制将时间戳按毫秒解析,自然不会出现单位换算错误。

可行解决方案
  • 推送侧修改(最优方案):在Brave的GStreamer推流链路中新增时间戳转换逻辑,将输出的PTS、DTS统一从纳秒除以1000转换为毫秒单位后再封装发送。如果你使用的是GStreamer标准封装sink组件,可以直接在sink前插入capsfilter配置时间基为1/1000,GStreamer会自动完成时间戳单位转换,无需额外编码。
  • 服务端配置修改:检查OME的输入流配置项,开启时间戳自动校正、时间基自适应功能,OME内置了针对不同输入源的时间戳对齐逻辑,开启后会自动识别输入流的时间基并转换为内部适配的单位,无需修改推送侧逻辑。
  • 快速验证方案:你可以用ffmpeg中转一次推流验证问题,ffmpeg会自动处理时间基适配,命令参考:
ffmpeg -i <Brave输出的流地址> -c copy -f flv rtmp://<OME服务地址>/<应用名>/<流名>

如果中转后的流可以在OME上正常播放,即可完全确认是时间戳单位不匹配导致的问题。

内容的提问来源于stack exchange,提问作者Никель Виктор

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:02