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,12 +8,23 @@ 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 {
if _, err := c.pc.AddTransceiverFromKind( switch media.Direction {
webrtc.NewRTPCodecType(media.Kind), webrtc.RTPTransceiverInit{ case streamer.DirectionRecvonly:
Direction: webrtc.NewRTPTransceiverDirection(media.Direction), if _, err := c.pc.AddTransceiverFromKind(
}, webrtc.NewRTPCodecType(media.Kind),
); err != nil { webrtc.RTPTransceiverInit{Direction: webrtc.RTPTransceiverDirectionRecvonly},
return "", err ); err != nil {
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")
} }
} }

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)