使用Go语言播放Mp3文件
这里使用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文件相关推荐
- 使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件)
使用go语言GUI库实现对mp3文件的播放1(简单的播放mp3文件) 使用beep播放mp3文件(10num) 使用go语言GUI库fyne实现音乐播放器 要是想使用go语言实现播放mp3需要借助be ...
- iPhone上的lrc播放器可以在播放mp3文件时显示歌词
https://apps.apple.com/cn/app/%E6%96%B0lrc%E6%92%AD%E6%94%BE%E5%99%A82/id1535214306 长久以来,在iPhone上播放l ...
- 《新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 ...
- 使用DirectSound播放MP3文件
http://www.cppblog.com/codejie/archive/2009/03/26/77916.html 使用DirectSound播放MP3文件 将对MP3的支持代码加入到DSoun ...
- php调用播放mp3文件失败,需要修复从PHP传输私有MP3文件的错误
我有一些私人音乐文件的集合,我不想让人们很难链接,所以我创建了一个基于访问令牌的系统,以允许一个人使用的应用场景,这个应用场景必须由人类根据请求产生.这只是确保正在播放的音乐不会被链接.我在使用PHP ...
- java循环播放声音代码_java-无法循环播放MP3文件
好的,我正在尝试使声音文件在应用程序打开时永远循环播放.目前,这是我运行声音文件的一部分代码. public class Game { public static void main(String[] ...
- 在 iPhone 静音情况下,播放 MP3 文件的代码
转自: http://xiongzhend.blog.163.com/blog/static/6409850120108821651530/ 在 iPhone 静音情况下,播放 MP3 文件的代码 在 ...
- 如何使Ubuntu播放MP3文件
Because of licensing issues, Ubuntu is unable to play MP3s out of the box. We'll show you how to pla ...
- centos 7 播放MP3文件
如何在centos7下播放mp3 音频文件 centos 7 是无法直接播放mp3文件的.我是安装的vlc 播放器来播放. 首先linux 系统的硬件设备要有声卡支持才能播放音频. #> yum ...
最新文章
- Java学到什么水平能够出去找工作!
- 如何把薪资谈高一倍?请看大厂offer拿到手软的ML大神自述
- 后端接口的幂等性(转)
- MySql的upsert操作
- 还在用 Dockerfile 部署 Spring Boot?out 啦!试试谷歌的大杀器 Jib
- SQL Server编写存储过程小工具(三)
- [Bzoj2152]聪聪可可
- c语言程序由哪三个部分组成部分,C语言程序的组成部分
- 计算机毕业设计Python+djang的药物管理系统
- 数据分析师mysql面试题_30个sql面试题及答案(数据分析师福利)
- java销毁servlet_「销毁session」Servlet销毁session - seo实验室
- 银行业务模拟系统的设计与实现(C语言)
- 中国移动、天猫都在用的区块链抽奖,了解一下?
- 男孩子学计算机好不好,适合男孩学的专业 男生最吃香的专业
- GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
- 51单片机实现BMP280气压计海拔高度解析(附代码)
- 数据分析面试必考的Python统计分析
- 人工智能的可行性分析
- 如何租用mt4虚拟服务器,mt4服务器出租
- easypoi 语法_英语语法那些事儿
热门文章
- 微信企业号JS SDK
- 图片技巧:3分钟教你用Photoshop CS4,让您的店招靓起来
- 天津发展php怎么样,为什么那么多人选择留在滨海新区?他们现在怎么样了 ?
- 使用什么快捷键,关闭、打开、最小化qq聊天窗口
- 前端面试题及答案!!!!!!!
- 基于JAVA家用电器销售网站计算机毕业设计源码+数据库+lw文档+系统+部署
- RTK+GPS提高定位精度原理解析(一个小白写给另一个小白系列)
- linux驱动 ioctl 小结
- mysql查询每天在17-18点间的数据_[东北师范大学]《数据库系统》18秋在线作业1(100分)...
- 重启服务器后mysql表损坏 Incorrect key file for table ‘.\axxxx.MYI‘; try to repair it“,“tourl“:““,.....