-
Notifications
You must be signed in to change notification settings - Fork 485
Open
Description
正常启动两个服务,互相配置双方为relay_pull的配置,如果先拉流,会publish不了流
2024/12/04 12:11:59.934429 ERROR [GROUP1] in stream already exist at group. add=RTMPPUBSUB2, exist=RTMPPULL1 - group__in.go:54
2024/12/04 12:11:59.934446 ERROR [RTMPPUBSUB2] doMsg failed. stream=header={Csid:4 MsgLen:80 MsgTypeId:20 MsgStreamId:1 TimestampAbs:0}, b=len(core)=4096, rpos=0, wpos=0, hex=, msg=0200077075626c6973680040140000000000000502003273747265616d3f6c616c5f7365637265743d30336232383061633563343231356237303933633238326664313231636462390200046c697665 - server_session.go:250
源码这里报错了 pkg/logic/group_in.go,这个hasInSession里面会是true,因为里面会判断group.hasPullSession(),而这个hasPullSession里面会去找pullProxy里面的session,即group.pullProxy.rtmpSession != nil,导致层层传递为true,但是我的pullProxy也就是另一个lal进程没有这个流
func (group *Group) AddRtmpPubSession(session *rtmp.ServerSession) error {
group.mutex.Lock()
defer group.mutex.Unlock()
if group.hasInSession() {
Log.Errorf("[%s] in stream already exist at group. add=%s, exist=%s",
group.UniqueKey, session.UniqueKey(), group.inSessionUniqueKey())
return base.ErrDupInStream
}
Log.Debugf("[%s] [%s] add rtmp pub session into group.", group.UniqueKey, session.UniqueKey())
group.rtmpPubSession = session
group.addIn()
if group.shouldStartRtspRemuxer() {
group.rtmp2RtspRemuxer = remux.NewRtmp2RtspRemuxer(
group.onSdpFromRemux,
group.onRtpPacketFromRemux,
)
}
session.SetPubSessionObserver(group)
return nil
}
Metadata
Metadata
Assignees
Labels
No labels