起因
公司需要实现一个定期抓取分销系统数据并以声音播放的方式通知的pc端程序,本人对golang非常感兴趣,于是打算用golang来实现。
探索
- 方案一 B站视频
1.1 方案说明:
使用oto和minmp3 这个库来实现播放声音的功能。
1.2 方案的不足
当启动任务,每秒去播放声音的时候,时间一长就提示错误。于是,对声音播放不懂的我,到github提交了问题,目前没有解决方法。本人只好继续寻找其他的库,百度、谷歌啥的,发现了portaudio这个库(本人是菜鸟,对操作系统底层的api不懂,也不理解混音啥的算法,只能寻找其他的可代替的库)
方案二 B站视频
2.1 方案说明:
使用portaudio和minmp3 这个库来实现播放声音的功能。
2.2 方案的不足
portaudio 经过测试不会出现oto库的问题,可以使用。但是,如果播放一段文件大小为7M左右的mp3文件,发现内存有一百多M。虽说,消息通知的语音都是5k左右的短语音,但是作为有强迫症的我,还是不满意。内存大的原因是 minmp3 这个库,解析mp3后,文件是放在内存里面的。而我发现portaudio这个库的示例代码里面有一个go-mpg123解析声音的库。方案三 B站视频
3.1 方案说明:
使用portaudio和go-mpg123 这个库来实现播放声音的功能。
3.2 方案不足
使用的portaudio和mpg123已经完美的解决了公司的需求。但是 这两个库都是使用cgo,所以在wins环境上开发需要好搭建环境。
结束语
1、golang语言非常简单高效。
2、有问题,大家可以百度,谷歌,到社区提问。
3、如果您想支持作者,可以到B站上,给作者点个赞,关注作者。