beep.go 614 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "log"
  6. "os"
  7. "github.com/hajimehoshi/oto"
  8. "github.com/hajimehoshi/go-mp3"
  9. )
  10. func run() error {
  11. f, err := os.Open("alert.mp3")
  12. if err != nil {
  13. return err
  14. }
  15. defer f.Close()
  16. d, err := mp3.NewDecoder(f)
  17. if err != nil {
  18. return err
  19. }
  20. c, err := oto.NewContext(d.SampleRate(), 2, 2, 44100)
  21. if err != nil {
  22. return err
  23. }
  24. defer c.Close()
  25. p := c.NewPlayer()
  26. defer p.Close()
  27. fmt.Printf("Length: %d[bytes]\n", d.Length())
  28. if _, err := io.Copy(p, d); err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. func main() {
  34. if err := run(); err != nil {
  35. log.Fatal(err)
  36. }
  37. }