diff --git a/pkg/webrtc/client.go b/pkg/webrtc/client.go index 985126ce..658573ca 100644 --- a/pkg/webrtc/client.go +++ b/pkg/webrtc/client.go @@ -8,12 +8,23 @@ import ( func (c *Conn) CreateOffer(medias []*streamer.Media) (string, error) { for _, media := range medias { - if _, err := c.pc.AddTransceiverFromKind( - webrtc.NewRTPCodecType(media.Kind), webrtc.RTPTransceiverInit{ - Direction: webrtc.NewRTPTransceiverDirection(media.Direction), - }, - ); err != nil { - return "", err + switch media.Direction { + case streamer.DirectionRecvonly: + if _, err := c.pc.AddTransceiverFromKind( + webrtc.NewRTPCodecType(media.Kind), + webrtc.RTPTransceiverInit{Direction: webrtc.RTPTransceiverDirectionRecvonly}, + ); 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") } } diff --git a/pkg/webrtc/producer.go b/pkg/webrtc/producer.go index ecfb889b..acd45fd2 100644 --- a/pkg/webrtc/producer.go +++ b/pkg/webrtc/producer.go @@ -23,6 +23,9 @@ func (c *Conn) GetTrack(media *streamer.Media, codec *streamer.Codec) *streamer. track = streamer.NewTrack(media, codec) } else { track = c.getProducerSendTrack(media, codec) + if track == nil { + panic("getProducerSendTrack return nil track") + } } c.tracks = append(c.tracks, track)