You need to enable JavaScript to run this app. ZeroMQ PUB/SUB模式多订阅者无法同时接收视频流问题排查
优惠活动
大模型
产品
解决方案
定价
更多

ZeroMQ PUB/SUB模式多订阅者无法同时接收视频流问题排查

问题根因

你把ZMQ PUB/SUB模式下的bind和connect操作方向搞反了,这是核心问题:

  • 同一时间,同一个IPC路径仅允许一个进程执行bind操作。你的代码中让所有订阅者(客户端)执行bind绑定ipc:///tmp/v4l,第一个启动的客户端会独占该路径,后续客户端绑定失败自然无法接收数据。服务端作为发布者执行connect,只会连接到第一个成功绑定路径的客户端,所以只有第一个启动的客户端能收到数据,关闭第一个后第二个才会接入。

修正方案

互换两端的bind和connect逻辑即可:

  1. 服务端(发布者)修改代码:
    将原代码中的
publisher.connect("ipc:///tmp/v4l")

替换为

publisher.bind("ipc:///tmp/v4l")
  1. 客户端(订阅者)修改代码:
    将原代码中的
subscriber.bind("ipc:///tmp/v4l")

替换为

subscriber.connect("ipc:///tmp/v4l")

额外注意事项

ZMQ PUB端启动后和SUB端完成IPC握手需要极短时间,如果你启动发布者后立刻发送视频帧,前几秒的帧可能会丢失,可以在发布者bind完成后加1秒左右的延迟,等待所有订阅者完成连接再开始发数据,避免丢帧。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 10:06:03