【发布时间】:2020-10-22 19:54:49
【问题描述】:
在C++ 程序中,我使用GStreamer 管道生成RTP 流并使用multiudpsink 元素将其同时发送到两个目的地。
这工作正常,除了两个流具有相同的RTP SSRC。有没有办法为两个流设置不同的SSRCs ?
【问题讨论】:
标签: c++ gstreamer rtp gstreamer-1.0
在C++ 程序中,我使用GStreamer 管道生成RTP 流并使用multiudpsink 元素将其同时发送到两个目的地。
这工作正常,除了两个流具有相同的RTP SSRC。有没有办法为两个流设置不同的SSRCs ?
【问题讨论】:
标签: c++ gstreamer rtp gstreamer-1.0
没有办法。
SSRC 是RTP 会话参与者的唯一标识符。
RTP 会话管理器 持有所有参与者的SSRCs。唯一标识符SSRC 不能重复,不同的SSRCs 对应会话的不同参与者。
所以SSRC 不是会话或一对参与者的标识符,而是单个用户的标识符。
在您的情况下,SSRC 是RTP 流的生成器的标识符,因此在这种情况下不可能有两个不同的SSRC。
进一步阅读here
【讨论】:
我找到的解决方案是使用 tee 元素并有多个分支,每个分支都有自己的 RTP 编码器(在我的情况下为 rtpopuspay)和 multiupdsink 元素。
这样每个提要都会获得不同的 SSRC。
【讨论】: