// Package audio 提供基于 oto/v3 的音频播放功能。 // // 播放模式: // - 一次性播放: PlayWav(), PlayMP3() - 阻塞直到完成或 context 取消 // - 循环播放: PlayMP3Loop() - 非阻塞,返回 player 和清理函数 // // 使用示例: // // // 一次性播放 WAV // err := audio.PlayWav(ctx, wavReader) // if err != nil && !errors.Is(err, context.Canceled) { // log.Printf("播放失败: %v", err) // } // // // 循环播放 MP3 // player, cleanup, err := audio.PlayMP3Loop(mp3Reader) // if err != nil { // return err // } // defer cleanup() // // ... 播放中 ... // // 资源管理: // - 一次性播放: 函数内部自动管理所有资源 // - 循环播放: 调用者必须调用 defer cleanup() 清理资源 // package audio