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
|
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 {
|
for _, producer := range s.producers {
|
||||||
// start new client
|
// start new client
|
||||||
dst, err := GetProducer(producer.url)
|
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)
|
// receive track from WebRTC consumer (microphone, backchannel, two way audio)
|
||||||
return c.addConsumerRecvTrack(track)
|
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")
|
panic("not implemented")
|
||||||
|
|||||||
Reference in New Issue
Block a user