公司需要实现一个定期抓取分销系统数据并以声音播放的方式通知的 pc 端程序,本人对 golang 非常感兴趣,于是打算用 golang 来实现。
当启动任务,每秒去播放声音的时候,时间一长就提示错误。于是,对声音播放不懂的我,到 github 提交了问题,目前没有解决方法。本人只好继续寻找其他的库,百度、谷歌啥的,发现了 portaudio 这个库(本人是菜鸟,对操作系统底层的 api 不懂,也不理解混音啥的算法,只能寻找其他的可代替的库)
使用portaudio和minmp3 这个库来实现播放声音的功能。
portaudio 经过测试不会出现 oto 库的问题,可以使用。但是,如果播放一段文件大小为 7M 左右的 mp3 文件,发现内存有一百多 M。虽说,消息通知的语音都是 5k 左右的短语音,但是作为有强迫症的我,还是不满意。内存大的原因是 minmp3 这个库,解析 mp3 后,文件是放在内存里面的。而我发现 portaudio 这个库的示例代码里面有一个go-mpg123解析声音的库。
使用portaudio和go-mpg123 这个库来实现播放声音的功能。
使用的 portaudio 和 mpg123 已经完美的解决了公司的需求。但是 这两个库都是使用 cgo,所以在 wins 环境上开发需要搭建好开发环境。
1、golang 语言非常简单高效。 2、如有不对的地方,欢迎大神指正。 3、如果您想支持作者,可以到B 站上,给作者点个赞,关注作者。 4、简书原文地址:点我
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.