golang声音播放的初探

起因

公司需要实现一个定期抓取分销系统数据并以声音播放的方式通知的pc端程序,本人对golang非常感兴趣,于是打算用golang来实现。


探索

  1. 方案一 B站视频
    1.1 方案说明:
    使用otominmp3 这个库来实现播放声音的功能。
    1.2 方案的不足
    当启动任务,每秒去播放声音的时候,时间一长就提示错误。于是,对声音播放不懂的我,到github提交了问题,目前没有解决方法。本人只好继续寻找其他的库,百度、谷歌啥的,发现了portaudio这个库(本人是菜鸟,对操作系统底层的api不懂,也不理解混音啥的算法,只能寻找其他的可代替的库)
  1. 方案二 B站视频
    2.1 方案说明:
    使用portaudiominmp3 这个库来实现播放声音的功能。
    2.2 方案的不足
    portaudio 经过测试不会出现oto库的问题,可以使用。但是,如果播放一段文件大小为7M左右的mp3文件,发现内存有一百多M。虽说,消息通知的语音都是5k左右的短语音,但是作为有强迫症的我,还是不满意。内存大的原因是 minmp3 这个库,解析mp3后,文件是放在内存里面的。而我发现portaudio这个库的示例代码里面有一个go-mpg123解析声音的库。

  2. 方案三 B站视频
    3.1 方案说明:
    使用portaudiogo-mpg123 这个库来实现播放声音的功能。
    3.2 方案不足
    使用的portaudio和mpg123已经完美的解决了公司的需求。但是 这两个库都是使用cgo,所以在wins环境上开发需要好搭建环境。


结束语

1、golang语言非常简单高效。
2、有问题,大家可以百度,谷歌,到社区提问。
3、如果您想支持作者,可以到B站上,给作者点个赞,关注作者。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,101评论 2 89
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,305评论 4 61
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 在床上辗转反侧,难以入眠。即使电风扇在寂静的夜里放肆地摇摆着,可还是难以消除周遭的燥热,索性打开灯,打开手机,记录...
    此情可待却已惘然阅读 262评论 0 0
  • 在路上的时候,我突然想到了一个问题,我该如何面对死亡如何面对自己至亲至爱的人离开自己。其实自己活的也很麻木,有时候...
    知识日记阅读 436评论 0 0