Adds stream play logic to active producer

This commit is contained in:
Alexey Khit
2023-03-11 20:56:26 +03:00
parent 13c426e2a9
commit 0b714a59e5
2 changed files with 43 additions and 0 deletions
+31
View File
@@ -20,6 +20,37 @@ func (s *Stream) Play(source string) error {
var src streamer.Producer
for _, producer := range s.producers {
if producer.element == nil {
continue
}
cons, ok := producer.element.(streamer.Consumer)
if !ok {
continue
}
if src == nil {
var err error
if src, err = GetProducer(source); err != nil {
return err
}
}
if !matchMedia(src, cons) {
continue
}
s.AddInternalProducer(src)
go func() {
_ = src.Start()
s.RemoveProducer(src)
}()
return nil
}
for _, producer := range s.producers {
// start new client
dst, err := GetProducer(producer.url)