Fix WebRTC active producer with backchannel

This commit is contained in:
Alexey Khit
2023-03-12 19:56:15 +03:00
parent 58849fd1e5
commit d686d4f691
2 changed files with 20 additions and 6 deletions

View File

@@ -8,13 +8,24 @@ import (
func (c *Conn) CreateOffer(medias []*streamer.Media) (string, error) { func (c *Conn) CreateOffer(medias []*streamer.Media) (string, error) {
for _, media := range medias { for _, media := range medias {
switch media.Direction {
case streamer.DirectionRecvonly:
if _, err := c.pc.AddTransceiverFromKind( if _, err := c.pc.AddTransceiverFromKind(
webrtc.NewRTPCodecType(media.Kind), webrtc.RTPTransceiverInit{ webrtc.NewRTPCodecType(media.Kind),
Direction: webrtc.NewRTPTransceiverDirection(media.Direction), webrtc.RTPTransceiverInit{Direction: webrtc.RTPTransceiverDirectionRecvonly},
},
); err != nil { ); err != nil {
return "", err return "", err
} }
case streamer.DirectionSendonly:
if _, err := c.pc.AddTransceiverFromTrack(
NewTrack(media.Kind),
webrtc.RTPTransceiverInit{Direction: webrtc.RTPTransceiverDirectionSendonly},
); err != nil {
return "", err
}
case streamer.DirectionSendRecv:
panic("not implemented")
}
} }
desc, err := c.pc.CreateOffer(nil) desc, err := c.pc.CreateOffer(nil)

View File

@@ -23,6 +23,9 @@ func (c *Conn) GetTrack(media *streamer.Media, codec *streamer.Codec) *streamer.
track = streamer.NewTrack(media, codec) track = streamer.NewTrack(media, codec)
} else { } else {
track = c.getProducerSendTrack(media, codec) track = c.getProducerSendTrack(media, codec)
if track == nil {
panic("getProducerSendTrack return nil track")
}
} }
c.tracks = append(c.tracks, track) c.tracks = append(c.tracks, track)