golang聲音播放的初探

jicg發表於2018-12-29

起因

公司需要實現一個定期抓取分銷系統資料並以聲音播放的方式通知的pc端程式,本人對golang非常感興趣,於是打算用golang來實現。


探索

1. 方案一 B站視訊

1.1 方案說明:

使用otominmp3 這個庫來實現播放聲音的功能。

1.2 方案的不足

當啟動任務,每秒去播放聲音的時候,時間一長就提示錯誤。於是,對聲音播放不懂的我,到github提交了問題,目前沒有解決方法。本人只好繼續尋找其他的庫,百度、谷歌啥的,發現了portaudio這個庫(本人是菜鳥,對作業系統底層的api不懂,也不理解混音啥的演算法,只能尋找其他的可代替的庫)

2. 方案二 B站視訊

2.1 方案說明:

使用portaudiominmp3 這個庫來實現播放聲音的功能。

2.2 方案的不足

portaudio 經過測試不會出現oto庫的問題,可以使用。但是,如果播放一段檔案大小為7M左右的mp3檔案,發現記憶體有一百多M。雖說,訊息通知的語音都是5k左右的短語音,但是作為有強迫症的我,還是不滿意。記憶體大的原因是 minmp3 這個庫,解析mp3後,檔案是放在記憶體裡面的。而我發現portaudio這個庫的示例程式碼裡面有一個go-mpg123解析聲音的庫。

3. 方案三 B站視訊

3.1 方案說明:

使用portaudiogo-mpg123 這個庫來實現播放聲音的功能。

3.2 方案不足

使用的portaudio和mpg123已經完美的解決了公司的需求。但是 這兩個庫都是使用cgo,所以在wins環境上開發需要搭建好開發環境。


結束語

1、golang語言非常簡單高效。 2、如有不對的地方,歡迎大神指正。 3、如果您想支援作者,可以到B站上,給作者點個贊,關注作者。 4、簡書原文地址:點我

相關文章