Merge pull request #669 from strukturag/janus-multistream

Improve support for Janus 1.x
This commit is contained in:
Joachim Bauch 2024-04-16 16:23:58 +02:00 committed by GitHub
commit 0aed690463
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -143,6 +143,7 @@ type mcuJanus struct {
gw *JanusGateway
session *JanusSession
handle *JanusHandle
version int
closeChan chan struct{}
@ -283,6 +284,10 @@ func (m *mcuJanus) ConnectionInterrupted() {
m.notifyOnDisconnected()
}
func (m *mcuJanus) isMultistream() bool {
return m.version >= 1000
}
func (m *mcuJanus) Start() error {
ctx := context.TODO()
info, err := m.gw.Info(ctx)
@ -296,6 +301,8 @@ func (m *mcuJanus) Start() error {
return fmt.Errorf("Plugin %s is not supported", pluginVideoRoom)
}
m.version = info.Version
log.Printf("Found %s %s by %s", plugin.Name, plugin.VersionString, plugin.Author)
if !info.DataChannels {
return fmt.Errorf("Data channels are not supported")
@ -1175,7 +1182,15 @@ retry:
"request": "join",
"ptype": "subscriber",
"room": p.roomId,
"feed": streamTypeUserIds[p.streamType],
}
if p.mcu.isMultistream() {
join_msg["streams"] = []map[string]interface{}{
{
"feed": streamTypeUserIds[p.streamType],
},
}
} else {
join_msg["feed"] = streamTypeUserIds[p.streamType]
}
if stream != nil {
stream.AddToMessage(join_msg)