Files
go2rtc/pkg/wyoming/mic.go
2025-04-24 18:32:42 +03:00

36 lines
690 B
Go

package wyoming
import (
"fmt"
"net"
"github.com/AlexxIT/go2rtc/pkg/core"
)
func (s *Server) HandleMic(conn net.Conn) {
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 {
s.Error("mic error: %s", err)
return
}
_ = closed.Wait()
_ = mic.Stop()
}