package audio import ( "io" "os" "time" "github.com/tcolgate/mp3" ) func GetSongDuration(path string) (time.Duration, error) { var file, fopenErr = os.Open(path) if fopenErr != nil { return time.Duration(0), fopenErr } defer file.Close() var track = mp3.NewDecoder(file) var duration time.Duration var frame mp3.Frame var skipped = 0 for { var err = track.Decode(&frame, &skipped) if err != nil { if err == io.EOF { break } return time.Duration(0), err } duration += frame.Duration() } return duration, nil }