remote-mic/main.go

95 lines
1.4 KiB
Go
Raw Normal View History

2020-04-28 21:42:45 +00:00
package main
import (
"fmt"
2020-04-29 12:33:39 +00:00
"io"
2020-04-30 00:14:51 +00:00
"os"
2020-04-29 12:33:39 +00:00
"remote-mic/audio"
2020-05-04 23:10:30 +00:00
"remote-mic/networking"
2020-04-30 00:14:51 +00:00
"time"
2020-04-28 21:42:45 +00:00
)
2020-04-29 12:33:39 +00:00
func pulsectlExample() {
2020-04-29 18:48:55 +00:00
pulsectl := audio.NewPulsectl()
err := pulsectl.LoadPipeSourceModule()
if err != nil {
panic(err)
}
2020-04-28 21:42:45 +00:00
time.Sleep(10 * time.Second)
2020-04-29 18:48:55 +00:00
pulsectl.UnloadPipeSourceModule()
2020-04-28 21:42:45 +00:00
}
2020-04-29 12:33:39 +00:00
func micStreamExample() {
2020-04-29 18:48:55 +00:00
mic, err := audio.NewMicrophone()
if err != nil {
panic(err)
2020-04-29 12:33:39 +00:00
}
2020-04-29 18:48:55 +00:00
err = mic.Start()
2020-04-29 12:33:39 +00:00
if err != nil {
panic(err)
}
2020-04-29 18:48:55 +00:00
defer mic.Stop()
for {
io.Copy(os.Stdout, mic.AudioStream())
}
2020-04-29 12:33:39 +00:00
}
func usage() {
fmt.Println("Usage: remote-mic <command>")
os.Exit(1)
}
func listen() {
fmt.Print("Listening for connection on port 8080... ")
2020-05-04 23:10:30 +00:00
conn, err := networking.ListenAndAcceptTCP(":8080")
if err != nil {
panic(err)
}
2020-05-04 23:10:30 +00:00
reader := networking.NewAsyncReader(conn)
defer reader.Close()
fmt.Println("Connection accepted!")
2020-05-04 23:10:30 +00:00
recvChan := reader.RecvChan()
for {
buf, open := <-recvChan
if !open {
break
}
fmt.Printf("Bytes read: %d\n", len(buf))
fmt.Printf("Buf: %v\n", buf)
fmt.Printf("%v\n", string(buf))
}
}
func stream() {
2020-05-04 23:10:30 +00:00
conn, err := networking.ConnectTCP("localhost:8080")
if err != nil {
panic(err)
}
2020-05-04 23:10:30 +00:00
writer := networking.NewAsyncWriter(conn)
defer writer.Close()
2020-05-04 23:10:30 +00:00
c := writer.SendChan()
c <- []byte("cicasajtok")
fmt.Println("Exiting.")
}
2020-04-29 12:33:39 +00:00
func main() {
if len(os.Args) < 2 {
usage()
}
cmd := os.Args[1]
switch cmd {
case "listen":
listen()
case "stream":
stream()
default:
usage()
}
2020-04-29 12:33:39 +00:00
}