Files
go2rtc/pkg/wyoming/backchannel.go
T
2025-04-22 06:37:42 +03:00

43 lines
898 B
Go

package wyoming
import (
"fmt"
"time"
"github.com/AlexxIT/go2rtc/pkg/core"
"github.com/pion/rtp"
)
type Backchannel struct {
core.Connection
api *API
}
func (b *Backchannel) GetTrack(media *core.Media, codec *core.Codec) (*core.Receiver, error) {
return nil, core.ErrCantGetTrack
}
func (b *Backchannel) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiver) error {
sender := core.NewSender(media, codec)
sender.Handler = func(pkt *rtp.Packet) {
ts := time.Now().Nanosecond()
evt := &Event{
Type: "audio-chunk",
Data: []byte(fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, ts)),
Payload: pkt.Payload,
}
_ = b.api.WriteEvent(evt)
}
sender.HandleRTP(track)
b.Senders = append(b.Senders, sender)
return nil
}
func (b *Backchannel) Start() error {
for {
if _, err := b.api.ReadEvent(); err != nil {
return err
}
}
}