这里使用Mp3库为:
https://github.com/faiface/beep
这个库可解析播放的文件有WAV, MP3, OGG和FLAC。


参考官方的Wiki文档可以写出如下测试文件:

package musicplayerimport ("fmt""github.com/faiface/beep/mp3""github.com/faiface/beep/speaker""log""os""time"
)type MusicEntry struct {Id         string   //编号Name       string   //歌名Artist     string   //作者Source     string   //位置Type       string   //类型Filestream *os.File // 文件流
}func (me *MusicEntry) Open() {var err errorme.Filestream, err = os.Open(me.Source)if err != nil {log.Fatal(err)}
}func (me *MusicEntry) Play() {streamer, format, err := mp3.Decode(me.Filestream)if err != nil {log.Fatal(err)}defer streamer.Close()speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))fmt.Println("music length :", streamer.Len())speaker.Play(streamer)select {}
}

上面的Play函数中考虑到speaker.Play(streamer)是异步调用,所以使用了select进行阻塞。如果要实现停止操作,则使用for语名再配合select对通信信号进行监听就好了。

我这里使用的Go语言版本为1.13.8,操作系统为macOS Catalina,所以在编译过程中会出现如下警告,但不影响使用:

# github.com/hajimehoshi/oto
../../go/pkg/mod/github.com/hajimehoshi/oto@v0.3.1/driver_openal.go:35:22: warning: 'alcOpenDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Headers/alc.h:209:38: note: 'alcOpenDevice' has been explicitly marked deprecated here
../../go/pkg/mod/github.com/hajimehoshi/oto@v0.3.1/driver_openal.go:39:11: warning: 'alcCloseDevice' is deprecated: first deprecated in macOS 10.15 - OpenAL is deprecated in favor of AVAudioEngine [-Wdeprecated-declarations]
...

关于该问题的讨论可以在这里找到,如下:

使用Go语言播放Mp3文件相关推荐

  1. 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)

    使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件) 使用beep播放mp3文件(10num) 使用go语言GUI库fyne实现音乐播放器 要是想使用go语言实现播放mp3需要借助be ...

  2. iPhone上的lrc播放器可以在播放mp3文件时显示歌词

    https://apps.apple.com/cn/app/%E6%96%B0lrc%E6%92%AD%E6%94%BE%E5%99%A82/id1535214306 长久以来,在iPhone上播放l ...

  3. 《新lrc播放器2》-iPhone上可以显示lrc歌词的播放器可以在播放mp3文件时显示lrc文件中的歌词的播放器

    https://apps.apple.com/cn/app/%E6%96%B0lrc%E6%92%AD%E6%94%BE%E5%99%A82/id1535214306 以前,在iPhone上播放lrc ...

  4. 使用DirectSound播放MP3文件

    http://www.cppblog.com/codejie/archive/2009/03/26/77916.html 使用DirectSound播放MP3文件 将对MP3的支持代码加入到DSoun ...

  5. php调用播放mp3文件失败,需要修复从PHP传输私有MP3文件的错误

    我有一些私人音乐文件的集合,我不想让人们很难链接,所以我创建了一个基于访问令牌的系统,以允许一个人使用的应用场景,这个应用场景必须由人类根据请求产生.这只是确保正在播放的音乐不会被链接.我在使用PHP ...

  6. java循环播放声音代码_java-无法循环播放MP3文件

    好的,我正在尝试使声音文件在应用程序打开时永远循环播放.目前,这是我运行声音文件的一部分代码. public class Game { public static void main(String[] ...

  7. 在 iPhone 静音情况下,播放 MP3 文件的代码

    转自: http://xiongzhend.blog.163.com/blog/static/6409850120108821651530/ 在 iPhone 静音情况下,播放 MP3 文件的代码 在 ...

  8. 如何使Ubuntu播放MP3文件

    Because of licensing issues, Ubuntu is unable to play MP3s out of the box. We'll show you how to pla ...

  9. centos 7 播放MP3文件

    如何在centos7下播放mp3 音频文件 centos 7 是无法直接播放mp3文件的.我是安装的vlc 播放器来播放. 首先linux 系统的硬件设备要有声卡支持才能播放音频. #> yum ...

最新文章

  1. Java学到什么水平能够出去找工作!
  2. 如何把薪资谈高一倍?请看大厂offer拿到手软的ML大神自述
  3. 后端接口的幂等性(转)
  4. MySql的upsert操作
  5. 还在用 Dockerfile 部署 Spring Boot?out 啦!试试谷歌的大杀器 Jib
  6. SQL Server编写存储过程小工具(三)
  7. [Bzoj2152]聪聪可可
  8. c语言程序由哪三个部分组成部分,C语言程序的组成部分
  9. 计算机毕业设计Python+djang的药物管理系统
  10. 数据分析师mysql面试题_30个sql面试题及答案(数据分析师福利)
  11. java销毁servlet_「销毁session」Servlet销毁session - seo实验室
  12. 银行业务模拟系统的设计与实现(C语言)
  13. 中国移动、天猫都在用的区块链抽奖,了解一下?
  14. 男孩子学计算机好不好,适合男孩学的专业 男生最吃香的专业
  15. GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
  16. 51单片机实现BMP280气压计海拔高度解析(附代码)
  17. 数据分析面试必考的Python统计分析
  18. 人工智能的可行性分析
  19. 如何租用mt4虚拟服务器,mt4服务器出租
  20. easypoi 语法_英语语法那些事儿

热门文章

  1. 微信企业号JS SDK
  2. 图片技巧:3分钟教你用Photoshop CS4,让您的店招靓起来
  3. 天津发展php怎么样,为什么那么多人选择留在滨海新区?他们现在怎么样了 ?
  4. 使用什么快捷键,关闭、打开、最小化qq聊天窗口
  5. 前端面试题及答案!!!!!!!
  6. 基于JAVA家用电器销售网站计算机毕业设计源码+数据库+lw文档+系统+部署
  7. RTK+GPS提高定位精度原理解析(一个小白写给另一个小白系列)
  8. linux驱动 ioctl 小结
  9. mysql查询每天在17-18点间的数据_[东北师范大学]《数据库系统》18秋在线作业1(100分)...
  10. 重启服务器后mysql表损坏 Incorrect key file for table ‘.\axxxx.MYI‘; try to repair it“,“tourl“:““,.....