Adds stream play logic to active producer
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -25,6 +25,18 @@ func (c *Conn) AddTrack(media *streamer.Media, track *streamer.Track) *streamer.
|
||||
// receive track from WebRTC consumer (microphone, backchannel, two way audio)
|
||||
return c.addConsumerRecvTrack(track)
|
||||
}
|
||||
|
||||
case streamer.ModePassiveProducer:
|
||||
// "Stream to camera" function
|
||||
consCodec := media.MatchCodec(track.Codec)
|
||||
consTrack := c.GetTrack(media, consCodec)
|
||||
if consTrack == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return track.Bind(func(packet *rtp.Packet) error {
|
||||
return consTrack.WriteRTP(packet)
|
||||
})
|
||||
}
|
||||
|
||||
panic("not implemented")
|
||||
|
||||
Reference in New Issue
Block a user