48 lines
614 B
Go
48 lines
614 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/hajimehoshi/oto"
|
|
|
|
"github.com/hajimehoshi/go-mp3"
|
|
)
|
|
|
|
func run() error {
|
|
f, err := os.Open("alert.mp3")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
|
|
d, err := mp3.NewDecoder(f)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
c, err := oto.NewContext(d.SampleRate(), 2, 2, 44100)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer c.Close()
|
|
|
|
p := c.NewPlayer()
|
|
defer p.Close()
|
|
|
|
fmt.Printf("Length: %d[bytes]\n", d.Length())
|
|
|
|
if _, err := io.Copy(p, d); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
if err := run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|