Files
go2rtc/pkg/wyoming/mic.go
T
2025-04-22 16:35:44 +03:00

36 lines
674 B
Go

package wyoming
import (
"fmt"
"net"
"github.com/AlexxIT/go2rtc/pkg/core"
)
func (s *Server) HandleMic(conn net.Conn) error {
defer conn.Close()
var closed core.Waiter
var timestamp int
api := NewAPI(conn)
mic := newMicConsumer(func(chunk []byte) {
data := fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, timestamp)
evt := &Event{Type: "audio-chunk", Data: data, Payload: chunk}
if err := api.WriteEvent(evt); err != nil {
closed.Done(nil)
}
timestamp += len(chunk) / 2
})
mic.RemoteAddr = api.conn.RemoteAddr().String()
if err := s.MicHandler(mic); err != nil {
return err
}
defer mic.Stop()
return closed.Wait()
}